欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring自帶的校驗框架Validation的使用實例

 更新時間:2019年03月25日 11:59:26   作者:Satisfy_555  
今天小編就為大家分享一篇關于Spring自帶的校驗框架Validation的使用實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

1.首先來一個項目結構圖以及所需jar包

可以看到,沒有添加除了日志和jstl相關的jar包外,沒有其他spring以外的第三方jar包(即使用的是spring自帶的校驗框架)。

2.從前臺頁面開始,首先是接收用戶信息的表單loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!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>測試validator接口驗證</title>
</head>
<body>
<h3>登錄頁</h3>
<!-- 綁定user -->
<form:form modelAttribute="user" method="post" action="login">
<table>
<tr>
<td>登錄名:</td>
<td><form:input path="loginname"/></td>
<!-- 使用form:errors標簽 顯示loginname屬性的錯誤信息 -->
<td><form:errors path="loginname" cssStyle="color:red"/></td>
</tr>
<tr>
<td>密碼:</td>
<td><form:input path="password"/></td>
<!-- 使用form:errors標簽 顯示password屬性的錯誤信息 -->
<td><form:errors path="password" cssStyle="color:red"/></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
</form:form>
</body>
</html>

3.實體類User.java

public class User {
private String loginname;
private String password;
    //省略set和get方法…
}

4.控制器UserController.java 

@Controller
public class UserController {
//注入UserValidator對象
@Autowired
@Qualifier("userValidator")
private UserValidator userValidator;
@RequestMapping(value="/{formName}")
public String loginForm(
@PathVariable String formName,Model model){
User user = new User();
model.addAttribute("user", user);
// 動態(tài)跳轉頁面
return formName;
}
@RequestMapping(value="/login", method=RequestMethod.POST)
public String login(@ModelAttribute User user,Model model,Errors errors){
model.addAttribute("user", user);
//調用userValidator的驗證方法
userValidator.validate(user, errors);
//如果驗證不通過跳轉到loginForm視圖
if(errors.hasErrors()){
return "loginForm";
}
return "success"; 
}
}

5.校驗器UserValidator.java

//實現(xiàn)Spring的Validator接口
@Repository("userValidator")
public class UserValidator implements Validator{
//該校驗器能夠對clazz類型的對象進行校驗
public boolean supports(Class<?> clazz) {
//User指定的class參數(shù)所表示的類或接口是否相同,或是否是其超類的超接口
return User.class.isAssignableFrom(clazz);
}
//對目標類target進行校驗,并將校驗錯誤記錄在errors中
public void validate(Object target, Errors errors) {
/**
*使用ValidationUtils中的一個靜態(tài)方法rejectIfEmpty()來對
*loginname屬性進行校驗,假若‘loginname'屬性是null或者空字符
*串的話,就拒絕驗證通過。 
*/
ValidationUtils.rejectIfEmpty(errors, "loginname", null,"登錄名不能為空");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", null,"密碼不能為空");
User user = (User) target;
if(user.getLoginname().length() > 10){
//使用Errors的rejectValue方法驗證
errors.rejectValue("loginname", null, "用戶名不能超過10個字符");
}
if(user.getPassword() != null && !user.getPassword().equals("")
&& user.getPassword().length() <6){
errors.rejectValue("password", null, "密碼不能小于6位");
}
}
}

6.spring的配置文件和web.xml的配置文件略……

小結:

第一遍敲這個代碼的時候,有著各種各樣的小問題出現(xiàn),比較多的就是 類所對應的路徑要import對,因為不同的包中可能會有相同名字的類,而此時一不小心就會導錯了包,會給后面的編寫代碼帶來不必要的麻煩。昨天的時候就調試這個小小的demo就花了好久的時間,后來也沒再去管,然后今天有空了又重新敲了一遍代碼,發(fā)現(xiàn)沒有問題,直接一次就通過了,然后去對比昨天的代碼發(fā)現(xiàn),是我在第一遍敲代碼的時候把實體類的get和set方法的名字敲錯了(追溯起來的話是寫屬性的時候把屬性名敲錯了,然后get和set方法是自動生成的,后面去修改屬性時導致沒有將相應的set和get方法改正),哎,,,還是太粗心

ok,然后就是啟動服務器運行程序…

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • 深入理解Java中的裝箱和拆箱

    深入理解Java中的裝箱和拆箱

    這篇文章主要介紹了深入理解Java中的裝箱和拆箱,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Java線程池execute()方法源碼全面解析

    Java線程池execute()方法源碼全面解析

    這篇文章主要介紹了Java線程池execute()方法源碼全面解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java數(shù)據(jù)結構與算法入門實例詳解

    Java數(shù)據(jù)結構與算法入門實例詳解

    這篇文章主要介紹了Java數(shù)據(jù)結構與算法入門實例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java實現(xiàn)員工管理系統(tǒng)

    Java實現(xiàn)員工管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)員工管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • ConcurrentHashMap原理及使用詳解

    ConcurrentHashMap原理及使用詳解

    ConcurrentHashMap是Java中的一種線程安全的哈希表實現(xiàn),它提供了與Hashtable和HashMap類似的API,是一個高效且可靠的多線程環(huán)境下的哈希表實現(xiàn),非常適合在并發(fā)場景中使用,本文就簡單介紹一下ConcurrentHashMap原理及使用,需要的朋友可以參考下
    2023-06-06
  • Spring Security OAuth2集成短信驗證碼登錄以及第三方登錄

    Spring Security OAuth2集成短信驗證碼登錄以及第三方登錄

    這篇文章主要介紹了Spring Security OAuth2集成短信驗證碼登錄以及第三方登錄,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Spring Boot 部署過程解析(jar or war)

    Spring Boot 部署過程解析(jar or war)

    這篇文章主要介紹了Spring Boot 部署過程解析(jar or war),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • SpringBoot2.x集成Dozer的示例代碼

    SpringBoot2.x集成Dozer的示例代碼

    本文主要介紹了SpringBoot2.x集成Dozer的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java多線程批量拆分List導入數(shù)據(jù)庫的實現(xiàn)過程

    java多線程批量拆分List導入數(shù)據(jù)庫的實現(xiàn)過程

    這篇文章主要給大家介紹了關于java多線程批量拆分List導入數(shù)據(jù)庫的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • Springboot定時任務Scheduled重復執(zhí)行操作

    Springboot定時任務Scheduled重復執(zhí)行操作

    這篇文章主要介紹了Springboot定時任務Scheduled重復執(zhí)行操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論