spring學習之參數(shù)傳遞與檢驗詳解
前言
Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,非常受現(xiàn)在開發(fā)者的喜愛,下面這篇文章主要給大家介紹了關于spring參數(shù)傳遞與檢驗的相關內(nèi)容,分享出供大家參考學習,下面來一起看看詳細的介紹:
一、背景
在spring請求時,要對參數(shù)進行檢查,以前一直使用如下方式來獲取參數(shù),在參數(shù)特別多的時候,代碼很不簡潔。
String userId= request.getParameter("userId");
后來使用注解@RequestParam代碼整潔了好多
@RequestParam(value = "userId",required=true) String userId
后來對于參數(shù)比較多的情況,使用一個bean來接收請求參數(shù)
@RequestMapping(value="/saveUser")
public String saveUser(User user) {}
對于比較復雜,有層級關系情況,使用注解@RequestBody實現(xiàn)
public String setUser(@RequestBody String userInfo) {
//使用fastjson轉換為實體類
}
不管使用以上的哪種方式都要對參數(shù)進行校驗,如果一個個參數(shù)的檢查是否為空,檢查邊界范圍,會導致代碼很多。使用@Valid注解來對參數(shù)進行校驗能讓代碼更整潔。
二、使用
本文以實體類接收請求參數(shù)為例簡單講解,validation一共有hibernate-validator,javax.validation和spring-validator三種注解,本文主要是簡單講解一下javax.validation的使用
@RequestMapping(value="/saveUser")
@ResponseBody
public JSONObject saveUser(@Valid User user, BindingResult result){
JSONObject jsonObject = new JSONObject();
//判斷是否檢驗錯誤信息
if(result.hasErrors()){
//取出第一條錯誤信息返回
List<FieldError> list = result.getFieldErrors();
String errorMessage = CollectionUtils.isEmpty(list)?
"參數(shù)錯誤!":list.get(0).getDefaultMessage();
jsonObject.put("errorMessage",errorMessage );
return jsonObject;
}
//saveUser保存用戶信息模塊省略
jsonObject.put("errorMessage","success");
return jsonObject;
}
//使用lombok
@Data
public class User implements Serializable{
@NotNull(message = "用戶id不能為空")
@Pattern(regexp="^\\d{12}$",message = "用戶id非法")
private String userId;
private String userName;
private int age;
}
- 使用@Valid注解進行參數(shù)檢查
- 在沒有使用BindingResult時,程序會拋出空指針等異常信息,不能返回自定義信息,網(wǎng)上查了一下需要使用BindingResult來處理Error信息,自定義返回錯誤數(shù)據(jù)。
- @NotNull,@Pattern,@Size,@Max,@Min,@Digits是我在項目中經(jīng)常使用的注解
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Spring框架學習之Spring?@Autowired實現(xiàn)自動裝配的代碼
自動裝配就是說,你不用手動實現(xiàn)bean之間的組合關系,只要使用了@Autowired注解,程序就會自動的注入這個需要的bean,前提是你的Spring容器有這個bean,這篇文章主要介紹了Spring?@Autowired實現(xiàn)自動裝配,需要的朋友可以參考下2021-12-12
SpringBoot利用限速器RateLimiter實現(xiàn)單機限流的示例代碼
本文主要介紹了SpringBoot利用限速器RateLimiter實現(xiàn)單機限流的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
SpringBoot中使用@Async實現(xiàn)異步任務調(diào)用詳解
這篇文章主要介紹了SpringBoot中使用@Async實現(xiàn)異步任務調(diào)用詳解,一個可以無需等待被調(diào)用函數(shù)的返回值就讓操作繼續(xù)進行的方法(來自百度百科),即程序在順序執(zhí)行時,不等待異步調(diào)用的語句返回結果就執(zhí)行后面的程序,需要的朋友可以參考下2023-12-12
利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程
大家應該都知道Idea社區(qū)版本,默認是不能創(chuàng)建SpringBoot項目的,下面這篇文章主要給大家介紹了關于利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04
java數(shù)據(jù)庫操作類演示實例分享(java連接數(shù)據(jù)庫)
java數(shù)據(jù)庫操作類演示實例分享,大家參考使用吧2013-12-12
springdata jpa使用Example快速實現(xiàn)動態(tài)查詢功能
這篇文章主要介紹了springdata jpa使用Example快速實現(xiàn)動態(tài)查詢功能,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
mybatis-plus批處理IService的實現(xiàn)示例
這篇文章主要介紹了mybatis-plus批處理IService的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08

