• SpringMVC 服务器端验证


    1.导入JSR303验证类库Jar包
    2.在MVC的配置文件中添加<mvc:annotation-driven/>的配置
    3.在MVC的配置文件中添加验证器的配置
    4.在接收表单数据的类中添加验证规则注解
    5.在控制器方法的表单对象参数上添加@valid注解
    6.在控制器方法中对BindResult对象进行判断

    struts2:validation.xml

    struts2                            SpringMVC

    实体类                              LoginForm类

    action                              Controller

    struts.xml                        MVC-servlet.xml

    先导入支持服务器端验证的组件    JSR-303验证类库  里边有四个类库

    在LoginForm类中配置:

    package cn.bdqn.mvc.form;
    
    import org.hibernate.validator.constraints.NotEmpty;
    
    public class LoginForm {
    	private String loginName;
    	private String password;
    	
    	@NotEmpty(message="请输入登录名")
    	public String getLoginName() {
    		return loginName;
    	}
    	public void setLoginName(String loginName) {
    		this.loginName = loginName;
    	}
    	@NotEmpty(message="请输入密码")
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    }
    

     在MVC-servlet.xml中配置

    <!-- 基于注解的MVC配置 -->
    <mvc:annotation-driven/>
    <!-- 验证器 -->	 
    	<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    		<!-- 使用Hibernate验证框架进行验证 -->
            <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>        
        </bean>
    

     在LoginController类中配置:

    //建议不用实体类接受请求,建议单独定义一个表单类
    	@RequestMapping(value="login",method=RequestMethod.POST)
    	public String doLogin2(
    			@Valid@ModelAttribute("form")LoginForm loginForm,//这样转发回表单页面的时候会自动回填数据
    			BindingResult result
    			){
    		//是否发生服务器端验证错误,hasErrors()是管所有的错误
    		if(result.hasErrors()){
    			return "login";
    		}
    		
    		if(!loginForm.getLoginName().equals("admin")){
    			result.rejectValue("loginName","form", "用户名输入错误");  //reject是驳回的意思
    		}else if (!loginForm.getPassword().equals("123456")) {
    			result.rejectValue("password","form", "密码输入错误");
    		}
    		//如果添加了错误信息,则转发回登陆表单页面
    		if(result.hasErrors()){
    			return "login";
    		}
    		
    		
    		System.out.println("登录名:"+loginForm.getLoginName());
    		System.out.println("密码:"+loginForm.getPassword());
    		return "hello";
    	}
    
  • 相关阅读:
    java-正则表达式6
    java-正则表达式5
    java-正则表达式4
    java-正则表达式3
    java-正则表达式2
    12.5
    JAVA GUI随笔
    JAVA个人知识总结
    UML关系图
    JAVA中的聚集和组合的区别和联系
  • 原文地址:https://www.cnblogs.com/Angelinas/p/5638083.html
Copyright © 2020-2023  润新知