1.在pom.xml中添加应有的jar包。
因为此验证器由springmvc 和hibernate共同配合,需要在springmvc中书写配置文件,所以用到javax.validation jar包 验证器由hibernate提供所以需要添加hibernate-validator jar包。
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.5.Final</version>
</dependency>
2.在springmvc的fc-servlet.xml配置文件中书写下面的配置器,同时需要添加mvc的限定名
<bean id="globalValidator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<mvc:annotation-driven validator="globalValidator"/>
添加mvc限定名
xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"
3.在model中的属性上面书写正则表达式 或者 past futhrue等关键字。
package com.lin.dang.dto;
import java.io.Serializable;
import javax.validation.constraints.Pattern;
public class UserDto implements Serializable {
@Pattern(regexp = "\w{4,20}")
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;
}
}
在contrller中书写代码
package com.lin.dang.controller;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.lin.dang.biz.UserService;
import com.lin.dang.dto.UserDto;
import com.lin.dang.model.User;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/to_login")
public String toLogin() {
return "login";
}
@RequestMapping("/to_register")
public String toReg() {
return "register";
}
// RequestParam 请求参数 来自于表单 或者?后面的一节
// cookieValue 来自于cookie
// RequestHeader -请求头
// PathVariable-路径参数("/student/12305")
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@Valid UserDto user, Errors errors, Model model, HttpServletRequest req) {
if (!errors.hasErrors()) {
if (userService.login(user)) {
System.out.println(userService.login(user));
req.getSession().setAttribute("username", user.getUsername());
return "redirect:/index.do";
} else {
model.addAttribute("hint", "用户名或密码错误");
return "login";
}
} else {
model.addAttribute("hint", "请输入有效地信息(4-20位)");
return "login";
}
}
@RequestMapping(value = "/reg", method = RequestMethod.POST)
public String register(User user) {
userService.register(user);
return "redirect:/index.do";
}
}