springmvc 数据验证

绑定完数据之后如何确保我们得到的数据的正确性,采用Hibernate-validator来进行验证,Hibernate-validator实现了JSR-303验证框架支持注解风格的验证。

1. springmvc-servlet.xml

<mvc:annotation-driven validator="validator" conversion-service="conversion-service" />  

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">  
    <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>  
    <!--不设置则默认为classpath下的 ValidationMessages.properties -->  
    <property name="validationMessageSource" ref="validatemessageSource"/>  
</bean>  
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />  
<bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">    
    <property name="basename" value="classpath:validatemessages"/>    
    <property name="fileEncodings" value="utf-8"/>    
    <property name="cacheSeconds" value="120"/>    
</bean> 

2.ValidateController.java

@Controller  
@RequestMapping(value = "/validate")  
public class ValidateController {  
    @RequestMapping(value="/test", method = {RequestMethod.GET})  
    public String test(Model model){  
        if(!model.containsAttribute("contentModel")){  
            model.addAttribute("contentModel", new Validate());  
        }  
        return "validatetest";  
    }  

    @RequestMapping(value="/test", method = {RequestMethod.POST})  
    public String test(Model model, @Valid @ModelAttribute("contentModel") Validate validate, BindingResult result) throws NoSuchAlgorithmException{
        //如果有验证错误 返回到form页面  
        if(result.hasErrors())  
            return test(model);  
        return "validatesuccess";       
    }  
}  

3.Validate.java
public class Validate{  
    @NotEmpty(message="{name.not.empty}")  
    private String name;  
    @Range(min=0, max=150,message="{age.not.inrange}")  
    private String age;  
    @NotEmpty(message="{email.not.empty}")  
    @Email(message="{email.not.correct}")  
    private String email;  
    public void setName(String name){  
        this.name=name;  
    }  
    public void setAge(String age){  
        this.age=age;  
    }  
    public void setEmail(String email){  
        this.email=email;  
    }  

    public String getName(){  
        return this.name;  
    }  
    public String getAge(){  
        return this.age;  
    }  
    public String getEmail(){  
        return this.email;  
    }  
}  
4.添加validatetest.jsp和validatesuccess.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Insert title here</title>  
</head>  
<body>  
    <form:form modelAttribute="contentModel" method="post">       
        <form:errors path="*"></form:errors><br/><br/>  
        name:<form:input path="name" /><br/>  
        <form:errors path="name"></form:errors><br/>  
        age:<form:input path="age" /><br/>  
        <form:errors path="age"></form:errors><br/>  
        email:<form:input path="email" /><br/>  
        <form:errors path="email"></form:errors><br/>  
        <input type="submit" value="Submit" />  
    </form:form>    
</body>  
</html> 

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!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=UTF-8">  
<title>Insert title here</title>  
</head>  
<body>  
    验证成功!  
</body>  
</html> 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值