SpringMvc学习记录
来源:互联网 发布:科比与詹姆斯数据对比 编辑:程序博客网 时间:2024/05/24 06:39
SpringMVC服务器验证一种是有两种方式,一种是基于Validator接口,一种是使用Annotaion JSR-303标准的验证,下面主要是学习这两种,工作中推荐后者,方便很多
一.基于Validator接口的验证.
首先创建User实例,并加入几个属性
public class User {
private String username;
private String password;
private String nickname;
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;}public String getNickname() { return nickname;}public void setNickname(String nickname) { this.nickname = nickname;}@Overridepublic String toString() { return "username--"+username+"password--"+password+"nickname--"+nickname;}
}
12345678910111213141516171819202122232425262728293031323334
接着创建用于校检的类UserValidator,让其实现Validator,覆盖其中的两个方法
import main.java.model.User;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
public class UserValidator implements Validator {
@Overridepublic boolean supports(Class<?> aClass) { //判断是否是要校验的类,这里是User return User.class.equals(aClass);}@Overridepublic void validate(Object o, Errors errors) { User u = (User) o; if (null == u.getPassword() || "".equals(u.getPassword())){ //此方法可以加四个参数,第一个表单域field, //区分是哪个表单出错,第二个errorCode错误码, //第三个制定了资源文件中占位符,第四个具体错误返回信息 //简写版可以把2,3参数去掉 errors.rejectValue("password",null,null,"password is null"); }}
}
12345678910111213141516171819202122232425
上面的类只实现了对密码判断是否为空,为空则注册这一错误信息,也就是”password is null”,接下来要实现控制器,控制器要做的事情,第一是注册这个校验器,第二是实现校验.
import main.java.model.User;
……
/**
* 加上@Controller决定这个类是一个控制器
*/
@Controller
@RequestMapping(“/user”)
public class HelloController {
//我们知道在Controller类中通过@InitBinder标记的方法只有在请求当前Controller的时候才会被执行//所以在这里注册校验器@InitBinderpublic void initBainder(DataBinder binder){ binder.replaceValidators(new UserValidator());}//这个方法主要是跳转到登录页面@RequestMapping(value = "/login",method = RequestMethod.GET)public String login(Model model){ model.addAttribute(new User()); return "user/login";}//处理登录表单@RequestMapping(value = "/login",method = RequestMethod.POST)public String login(@Validated User user, BindingResult br){ if (br.hasErrors()){ return "user/login"; } return "--";}}123456789101112131415161718192021222324252627282930313233
上面代码可以看到@Validated User user, BindingResult br这两个参数,@Validated表明参数user是要校验的类,BindingResult是存储错误信息的类,两者必须一一对应,并且位置挨着,不能中间有其他参数,
最后随便写一个jsp页面实现校检
<%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
<%@taglib prefix=”sf” uri=”http://www.springframework.org/tags/form” %>
<%
request.setCharacterEncoding(“utf-8”);
%>
用户登录
用户名:
密码:
昵称:
12345678910111213141516171819202122
这里写图片描述
前面实现的是局部校验,只对当前控制器有效,如果要实现全局校验的话需要配置springMVC.xml文件
- springMVC学习记录
- SpringMvc学习记录
- springmvc学习记录-20170601
- springMVC注解学习记录
- SpringMVC模式详细学习记录
- SpringMVC拦截器学习记录
- springmvc学习记录(一)
- springmvc 学习记录(二)
- SpringMVC学习记录(一)--环境配置
- SpringMVC学习记录(三)--异常处理
- SpringMVC学习记录(五)--表单标签
- SpringMVC学习记录(六)--Validator验证
- 只是简单记录自己学习的springmvc
- SpringMVC学习记录(九)--RequestContextHolder分析
- SpringMVC学习记录(六)--Validator验证
- SpringMVC学习记录(六)--Validator验证
- SpringMVC学习记录--Validator验证分析
- SpringMVC学习记录(六)--Validator验证
- 信号--进程间的通信
- 使用python,pandas对外汇储备进行预测分析
- hdu 5875 2016 ACM/ICPC Asia Regional Dalian Online 1008
- 关于子函数返回指针的解决办法
- iOS静态库.a开发
- SpringMvc学习记录
- Java中的类型信息
- TP单字母函数
- 用secureCRT 连接虚拟机中的linux
- 7.6 P POJ 1113Wall
- 第三方QQ登录
- 不等式证明
- 催人泪下的互联网创业故事我为何还没死掉-2016年9月江西IDC排行榜与发展报告
- C++ string 类型提取字符串