摘要:背景在請求時,要對參數(shù)進行檢查,以前一直使用如下方式來獲取參數(shù),在參數(shù)特別多的時候,代碼很不簡潔。使用注解來對參數(shù)進行校驗?zāi)茏尨a更整潔。
1.背景
在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) {}
對于比較復(fù)雜,有層級關(guān)系情況,使用注解@RequestBody實現(xiàn)
public String setUser(@RequestBody String userInfo) { //使用fastjson轉(zhuǎn)換為實體類 }
不管使用以上的哪種方式都要對參數(shù)進行校驗,如果一個個參數(shù)的檢查是否為空,檢查邊界范圍,會導(dǎo)致代碼很多。使用@Valid注解來對參數(shù)進行校驗?zāi)茏尨a更整潔。
2.使用本文以實體類接收請求參數(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()){ //取出第一條錯誤信息返回 Listlist = 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)常使用的注解
大家可以關(guān)注我的公眾號:不知風(fēng)在何處,相互溝通,共同進步。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67350.html
摘要:拷貝操作又一個非常好用的工具類和中分別存在一個,提供了對。除了支持基本類型以及基本類型的數(shù)組之外,還支持這些類的對象,其余一概不支持。而且,由于這些類都是采用反射機制實現(xiàn)的,對程序的效率也會有影響。因此,慎用或者使用看效果如何 java bean拷貝操作又一個非常好用的工具類 BeanUitls :spring (org.springframework.beans.BeanUtils)...
摘要:本節(jié)解釋它用在參數(shù)上的情形。一個用在方法參數(shù)上的注解指示了參數(shù)應(yīng)該從模型這里所說的模型指中獲取。方法是一種常用的從數(shù)據(jù)庫中獲取屬性的方式,可以通過使用注解把這種屬性在各個請求之間共享。下一步是數(shù)據(jù)綁定。 ??這一部分實例見這個項目的 mvc 分支下的 ModelAttrArgsController.java ??上節(jié)說過,@ModelAttribute可以用在方法或方法參數(shù)上。本節(jié)解...
摘要:通用是為了解決使用中的基本操作,使用它可以很方便的進行開發(fā),可以節(jié)省開發(fā)人員大量的時間。當該參數(shù)設(shè)置為時,時會查詢第一頁,超過總數(shù)時,會查詢最后一頁。 SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個 WEB 工...
摘要:接口接口作用是將請求映射到處理程序,以及預(yù)處理和處理后的攔截器列表,映射是基于一些標準的,其中的細節(jié)因不同的實現(xiàn)而不相同。該參數(shù)是類型,作用是檢查所有的映射解析器或使用或為的,默認為,即從上下文中檢查所有的。 概述 在Spring MVC啟動章節(jié)https://segmentfault.com/a/1190000014674239,介紹到了DispatcherServlet的onRef...
閱讀 1787·2023-04-25 21:50
閱讀 2432·2019-08-30 15:53
閱讀 778·2019-08-30 13:19
閱讀 2756·2019-08-28 17:58
閱讀 2478·2019-08-23 16:21
閱讀 2711·2019-08-23 14:08
閱讀 1386·2019-08-23 11:32
閱讀 1451·2019-08-22 16:09