您好,登錄后才能下訂單哦!
前言
Spring是于2003 年興起的一個(gè)輕量級(jí)的Java 開發(fā)框架,非常受現(xiàn)在開發(fā)者的喜愛,下面這篇文章主要給大家介紹了關(guān)于spring參數(shù)傳遞與檢驗(yàn)的相關(guān)內(nèi)容,分享出供大家參考學(xué)習(xí),下面來一起看看詳細(xì)的介紹:
一、背景
在spring請(qǐng)求時(shí),要對(duì)參數(shù)進(jìn)行檢查,以前一直使用如下方式來獲取參數(shù),在參數(shù)特別多的時(shí)候,代碼很不簡(jiǎn)潔。
String userId= request.getParameter("userId");
后來使用注解@RequestParam代碼整潔了好多
@RequestParam(value = "userId",required=true) String userId
后來對(duì)于參數(shù)比較多的情況,使用一個(gè)bean來接收請(qǐng)求參數(shù)
@RequestMapping(value="/saveUser") public String saveUser(User user) {}
對(duì)于比較復(fù)雜,有層級(jí)關(guān)系情況,使用注解@RequestBody實(shí)現(xiàn)
public String setUser(@RequestBody String userInfo) { //使用fastjson轉(zhuǎn)換為實(shí)體類 }
不管使用以上的哪種方式都要對(duì)參數(shù)進(jìn)行校驗(yàn),如果一個(gè)個(gè)參數(shù)的檢查是否為空,檢查邊界范圍,會(huì)導(dǎo)致代碼很多。使用@Valid注解來對(duì)參數(shù)進(jìn)行校驗(yàn)?zāi)茏尨a更整潔。
二、使用
本文以實(shí)體類接收請(qǐng)求參數(shù)為例簡(jiǎn)單講解,validation一共有hibernate-validator,javax.validation和spring-validator三種注解,本文主要是簡(jiǎn)單講解一下javax.validation
的使用
@RequestMapping(value="/saveUser") @ResponseBody public JSONObject saveUser(@Valid User user, BindingResult result){ JSONObject jsonObject = new JSONObject(); //判斷是否檢驗(yàn)錯(cuò)誤信息 if(result.hasErrors()){ //取出第一條錯(cuò)誤信息返回 List<FieldError> list = result.getFieldErrors(); String errorMessage = CollectionUtils.isEmpty(list)? "參數(shù)錯(cuò)誤!":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; }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。