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";
	}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM