SpringMVC的服务器验证
来源:互联网 发布:铣半圆编程 编辑:程序博客网 时间:2024/06/07 02:38
SpringMVC服务器验证—-JSR-303 java Bean 验证标准。
客户端验证:如果填写的数据不符合规则,就不会把数据提交到服务器(例如登录时,不填写账号和密码,不会把数据提交到服务器,客户端验证提示不能为空)。
服务器验证(两种情况):1.当通过非正常手段,跳过客户端验证,把不符合规则的数据提交到了服务器,此时需要进行客户端验证(例如登录时,直接通过地址栏把数据提交到服务器,不经过客户端验证) —–跟客户端验证的功能一样,服务器验证是档户通过非正常手段跳过了客户端验证。 2.当客户端没有进行客户端验证时,也需要进行服务器验证。
服务器验证目的:验证从客户端提交到服务器的数据的格式正确与否,如果传来的数据格式不正确,提示客户数据不正确,减轻了服务器的压力。
案例:用户的登录,如果不填写账号和密码,通过服务器验证,会显示账号和密码不能为空,只有当两者都填写了之后才会通过验证。
用springmvc来连接客户端与服务器时,会自动把数据封装到请求方法的参数上,此时需要对传来的参数进行验证。 假设实体类是User
public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username + ", password=" + password + "]"; }}
1. 导入验证需要的jar包。
1.1 JSR-303 java Bean 的三个jar包
1.2 SLF4J日志包俩个
1.3 支持springMVC的额外包
1.3.1 spring核心包 5个
1.3.2 springweb包 3个
2. 创建验证类。实现validator接口
public class MyValidate implements Validator{ /*springMVC数据的封装功能 指定符合条件的目标封装类(封装的目标类)需要验证*/ //是否需要验证 public boolean supports(Class<?> arg0) { return User.class.equals(arg0); //指定user这个目标封装类需要验证 } //验证 public void validate(Object arg0, Errors error) { System.out.println("验证user"+arg0); ValidationUtils.rejectIfEmpty(error, "username", null, "用户名不能为空"); //如果username是空,则返回错误信息 ValidationUtils.rejectIfEmpty(error, "password", null, "密码不能为空"} //同上}
**3. 设置验证类** --当给一个类设置了验证类,这个类才具有服务器验证能
@Controller //该类对象的创建交给springIoc去创建public class MyController { /** * 给这个类绑定一个验证类 * @param binder */ @InitBinder public void initBinder(DataBinder binder){ binder.setValidator(new MyValidate()); } @RequestMapping("/index") public String index(HttpServletRequest request){ request.setAttribute("user", new User()); return "index"; } @RequestMapping("/login") public String login(User user) { if(!error.hasErrors()){ //如果有错误信息,则不进行任何操作,在客户端给用户提示用户名不为空或密码不为空的的信息 System.out.println(user); return "index"; } } }
**4. 在需要验证的bean的方法的参数上加上注解 @valid**
目的:请求这个特定的方法时,会进行服务器验证
/** * 前提:给这个类设置了验证类 及上面initBinder()这个方法 * 当前提成立时,客户端请求服务器这个方法,会把数据封装到user对象中,如果前面写了@valid,则会验证,如果没有则不会验证 * * 客户端请求的方法必须带 Errors 这个参数 否则报org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors * Field error in object 'user' on field 'username': rejected value []; codes [null.user.username,null.username,null.java.lang.String,null]; arguments []; default message [用户名不能为空] * Field error in object 'user' on field 'password': rejected value []; codes [null.user.password,null.password,null.java.lang.String,null]; arguments []; default message [密码不能为空] * 错误 */ @RequestMapping("/login") public String login(@Valid User user,Errors error) { if(!error.hasErrors()){ //如果有错误信息,则不进行任何操作,在客户端给用户提示用户名不为空或密码不为空的的信息 System.out.println(user); return "index"; } }
**5.客户端获取服务器验证错误信息**
黄色部分获取步骤2中存放的错误信息
- SpringMVC的服务器验证
- SpringMVC的服务器验证二(注解方式实现)
- SpringMvc的消息验证
- SpringMvc的消息验证
- Springmvc的表单验证
- 使用SpringMVC的表单验证
- SpringMVC注解验证的国际化
- springmvc validator验证的使用
- SpringMVC的表单验证方式
- springmvc validator验证的使用
- springmvc validator验证的使用
- springmvc validator验证的使用
- SpringMVC验证
- springMvc验证
- 使用Validator做SpringMVC的验证框架 - 配置SpringMVC环境
- 基于springMVC的验证码实现方法
- springMVC登录验证码的问题
- springMVC Hibernate Validator验证框架的使用
- mouseover与mouseenter之间的区别,以及mouseleave与mouseout之间的区别
- utf-8文件的读写
- [UWP]依赖属性1:概述
- 一个linuX命令
- 微软surface3开启硬件虚拟化
- SpringMVC的服务器验证
- js 高程学习总结 第五章
- IntelliJ IDEA Maven项目在编译发布时候 mapper.xml不发布的解决办法
- MyBatis中的<where>标签和where子句的区别
- 关于 JVM 简单理解
- discuz社区与java web的钉钉手机版整合(一)
- 小P的故事——神奇的Dota
- 如何在Controller 中获取JSON文件的内容
- 能用HTML/CSS解决的问题就不要使用JS