1.導入JSR303驗證類庫Jar包
2.在MVC的配置文件中添加<mvc:annotation-driven/>的配置
3.在MVC的配置文件中添加驗證器的配置
4.在接收表單數據的類中添加驗證規則註解
5.在控制器方法的表單對象參數上添加@valid註解
6.在控制器方法中對BindResult對象進行判斷java
struts2:validation.xmlspring
struts2 SpringMVC服務器
實體類 LoginForm類mvc
action Controllerapp
struts.xml MVC-servlet.xml框架
先導入支持服務器端驗證的組件 JSR-303驗證類庫 裏邊有四個類庫ide
在LoginForm類中配置:this
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中配置spa
<!-- 基於註解的MVC配置 --> <mvc:annotation-driven/> <!-- 驗證器 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- 使用Hibernate驗證框架進行驗證 --> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> </bean>
在LoginController類中配置:hibernate
//建議不用實體類接受請求,建議單獨定義一個表單類
@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";
}