【课程大纲】 SpringMVC_1_开发环境搭建 共41页.pptx SpringMVC_2_HelloWorld 共19页.pptx SpringMVC_3_方法入参 共41页.pptx SpringMVC_4_方法返回值 共25页.pptx SpringMVC_5_常用注解 共22页.pptx SpringMVC_6_数据校验 共26页.pptx SpringMVC_7_国际化 共9页.pptx SpringMVC_8_标签库 共39页.pptx SpringMVC_9_文件上传 共9页.pptx SpringMVC_10_拦截器 共7页.pptx ### Java实训教程知识点详解 #### 一、SpringMVC数据校验概述 SpringMVC作为Spring框架中的一个重要组成部分,主要用于构建Web应用。随着版本的不断更新,SpringMVC提供了更为强大的功能来支持Web应用程序的开发。其中,数据校验是确保用户提交的数据符合预期格式的关键环节之一。 **数据校验的重要性:** - **提高用户体验:** 合理的数据校验可以减少用户因填写错误信息而造成的不便。 - **增强系统安全性:** 防止恶意用户提交非法数据,保护系统的安全性和稳定性。 - **简化业务逻辑:** 通过前端和后端的数据校验,可以简化业务处理逻辑,使程序更加健壮。 #### 二、SpringMVC 3.0之前的数据校验机制 在SpringMVC 3.0之前,数据校验主要依赖于自定义的验证类。这些验证类通常与实体类相关联,并实现`Validator`接口。 **自定义验证类步骤:** 1. **创建验证类:** 验证类应当位于与实体类相同的包下,并实现`org.springframework.validation.Validator`接口。 2. **实现方法:** - `supports(Class<?> clazz)`:判断该验证器是否支持特定类型的对象。 - `validate(Object target, Errors errors)`:进行具体的校验逻辑,将校验结果保存在`Errors`对象中。 3. **注册验证器:** 在控制器中使用`@InitBinder`注解,通过`DataBinder`注册验证器。 **示例代码:** ```java public class UserInfoValidator implements Validator { @Override public boolean supports(Class<?> clazz) { return clazz == UserInfo.class; } @Override public void validate(Object target, Errors errors) { UserInfo userInfo = (UserInfo) target; if ((userInfo.getUsername() == null) || (userInfo.getUsername().trim().length() < 1)) { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", null, "用户名不能为空!"); } if ((userInfo.getUsername() != null) && (userInfo.getUsername().trim().length() < 3)) { errors.rejectValue("username", null, "用户名不能少于3个字符!"); } } } ``` **控制器代码示例:** ```java @Controller @RequestMapping(value = "/user") public class UserManagerController { @Resource private BaseDAO<UserInfo> user_dao; @InitBinder public void initBinder(DataBinder binder) { binder.setValidator(new UserInfoValidator()); } @RequestMapping(value = "/save", method = RequestMethod.POST) public String save(@Valid UserInfo userInfo, BindingResult result) { if (result.hasErrors()) { // 处理校验错误 return "errorPage"; } // 保存数据 user_dao.save(userInfo); return "successPage"; } } ``` #### 三、SpringMVC 3.0及以后的数据校验机制 从SpringMVC 3.0版本开始,引入了对JSR 303规范的支持。JSR 303(Java Specification Request 303)定义了一套用于验证Java Bean的标准注解,如`@NotNull`、`@Size`等。 **JSR 303数据校验示例:** ```java @Entity @Table(name = "user_info", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_name"})}) public class UserInfo { @Id @GeneratedValue(generator = "uuidgenerator") @GenericGenerator(name = "uuidgenerator", strategy = "uuid") @Column(name = "user_id", length = 32) private String userid; @Column(name = "user_name", length = 30) @NotNull(message = "用户名不能为空!") @Size(min = 3, max = 20, message = "用户名长度应在3到20之间!") private String username; @Column(name = "user_pass", length = 50) private String userpass; private int age; } ``` **控制器代码示例:** ```java @Controller @RequestMapping(value = "/user") public class UserManagerController { @Resource private BaseDAO<UserInfo> user_dao; @RequestMapping(value = "/save", method = RequestMethod.POST) public String save(@Valid UserInfo userInfo, BindingResult result) { if (result.hasErrors()) { // 处理校验错误 return "errorPage"; } // 保存数据 user_dao.save(userInfo); return "successPage"; } } ``` #### 四、总结 通过上述分析,我们可以看到SpringMVC提供了两种不同的数据校验方式。对于早期版本的SpringMVC,推荐使用自定义验证器的方式来进行数据校验;而对于3.0及以上版本,则建议采用JSR 303注解的方式来简化校验逻辑,提高开发效率。 掌握SpringMVC中的数据校验机制对于开发高质量的Web应用程序至关重要。无论是采用传统的自定义验证器还是利用JSR 303规范,都能够有效地确保数据的有效性和完整性,从而提升应用程序的整体性能和用户体验。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/89534237/bg1.jpg)
![](https://csdnimg.cn/release/download_crawler_static/89534237/bg2.jpg)
![](https://csdnimg.cn/release/download_crawler_static/89534237/bg3.jpg)
![](https://csdnimg.cn/release/download_crawler_static/89534237/bg4.jpg)
![](https://csdnimg.cn/release/download_crawler_static/89534237/bg5.jpg)
剩余25页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/d65d1303dca64715939540eb2ae5ddff_qq_27595745.jpg!1)
- 粉丝: 440
- 资源: 6871
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)