您的位置:首页 > 编程语言 > Java开发

Spring 注册用户(使用Spring Validator 验证输入)

2016-07-28 10:44 435 查看
使用Spring MVC实现简单的用户注册,用户注册输入使用Spring Validator方式进行验证。

A、实现注册界面registration.jsp:

使用Spring jsp标签库:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="true" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>registration</title>
</head>
<body>
<form:form method="POST" modelAttribute="userForm" enctype="utf8">
<table>
<tr>
<td>username:</td>
<td>
<spring:bind path="username">
<form:input path="username"></form:input>
<form:errors path="username"></form:errors>
</spring:bind>
</td>
</tr>
<tr>
<td>password:</td>
<td>
<spring:bind path="password">
<form:input path="password"></form:input>
<form:errors path="password"></form:errors>
</spring:bind>
</td>
</tr>
<tr>
<td>
<input type="submit" value="registe"/>
</td>
</tr>
</table>
</form:form>
</body>
</html>

B、实现Spring Validator接口:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.users.dao.UserDaoImpl;
import com.users.model.User;

@Component
public class UserValidator implements Validator {

private UserDaoImpl userDaoImpl;
@Autowired
public UserValidator(UserDaoImpl userDaoImpl){
this.userDaoImpl=userDaoImpl;
}
public boolean <span style="color:#FF0000;">supports</span>(Class<?> aClass){
return User.class.equals(aClass);
}

public void <span style="color:#FF0000;">validate</span>(Object userObject, Errors errors) {
User user=(User)userObject;

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "NotEmpty");
if(user.getUsername().length()<6||user.getUsername().length()>32){
errors.rejectValue("username", "Size.userForm.username");
}
if(userDaoImpl.findByUserName(user.getUsername())!=null){
errors.rejectValue("username", "Duplicate.userForm.username");
}

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "NotEmpty");
if (user.getPassword().length() < 8 || user.getPassword().length() > 32) {
errors.rejectValue("password", "Size.userForm.password");
}

}
}


其中用到了消息的本地化,修改AppConfig文件:
添加validation消息列表:

@Bean
public ResourceBundleMessageSource messageSource(){
ResourceBundleMessageSource source=new ResourceBundleMessageSource();
source.setBasenames("localization/messages");
<span style="color:#FF0000;">source.setBasenames("localization/validation");</span>
source.setUseCodeAsDefaultMessage(true);
return source;
}

C、注册数据发送至后台时进行验证:
validator 调用validate方法,验证结果存入BindingResult中:

@RequestMapping(value="/registration",method=RequestMethod.POST)
public String registration(@ModelAttribute("userForm") User userForm,BindingResult bindingResult,Model model){
userValidator.<span style="color:#FF0000;">validate</span>(userForm,<span style="color:#FF0000;">bindingResult</span>);

if(bindingResult.hasErrors()){
return "registration";
}
System.out.println(userForm.getUsername());
userDaoImpl.save(userForm);
return "redirect:/secure/";
}

代码:https://github.com/angleBeibei/SpringSecurity
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: