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

spring學(xué)習(xí)之參數(shù)傳遞與檢驗(yàn)詳解

 更新時(shí)間:2017年07月13日 09:55:43   作者:沉淀  
這篇文章主要給大家介紹了關(guān)于spring參數(shù)傳遞與檢驗(yàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

Spring是于2003 年興起的一個(gè)輕量級(jí)的Java 開(kāi)發(fā)框架,非常受現(xiàn)在開(kāi)發(fā)者的喜愛(ài),下面這篇文章主要給大家介紹了關(guān)于spring參數(shù)傳遞與檢驗(yàn)的相關(guān)內(nèi)容,分享出供大家參考學(xué)習(xí),下面來(lái)一起看看詳細(xì)的介紹:

一、背景

在spring請(qǐng)求時(shí),要對(duì)參數(shù)進(jìn)行檢查,以前一直使用如下方式來(lái)獲取參數(shù),在參數(shù)特別多的時(shí)候,代碼很不簡(jiǎn)潔。

String userId= request.getParameter("userId");

后來(lái)使用注解@RequestParam代碼整潔了好多

@RequestParam(value = "userId",required=true) String userId

后來(lái)對(duì)于參數(shù)比較多的情況,使用一個(gè)bean來(lái)接收請(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í)體類(lèi)
}

不管使用以上的哪種方式都要對(duì)參數(shù)進(jìn)行校驗(yàn),如果一個(gè)個(gè)參數(shù)的檢查是否為空,檢查邊界范圍,會(huì)導(dǎo)致代碼很多。使用@Valid注解來(lái)對(duì)參數(shù)進(jìn)行校驗(yàn)?zāi)茏尨a更整潔。

二、使用

本文以實(shí)體類(lèi)接收請(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保存用戶(hù)信息模塊省略
  jsonObject.put("errorMessage","success");
  return jsonObject;
 }
//使用lombok
@Data
public class User implements Serializable{
 @NotNull(message = "用戶(hù)id不能為空")
 @Pattern(regexp="^\\d{12}$",message = "用戶(hù)id非法")
 private String userId;
 private String userName;
 private int age;
}
  • 使用@Valid注解進(jìn)行參數(shù)檢查
  • 在沒(méi)有使用BindingResult時(shí),程序會(huì)拋出空指針等異常信息,不能返回自定義信息,網(wǎng)上查了一下需要使用BindingResult來(lái)處理Error信息,自定義返回錯(cuò)誤數(shù)據(jù)。
  • @NotNull,@Pattern,@Size,@Max,@Min,@Digits是我在項(xiàng)目中經(jīng)常使用的注解

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Java?SpringBoot?獲取接口實(shí)現(xiàn)類(lèi)匯總

    Java?SpringBoot?獲取接口實(shí)現(xiàn)類(lèi)匯總

    這篇文章主要介紹了Java?SpringBoot?獲取接口實(shí)現(xiàn)類(lèi)匯總,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java使用mysql預(yù)編譯語(yǔ)句查詢(xún)優(yōu)勢(shì)及示例詳解

    java使用mysql預(yù)編譯語(yǔ)句查詢(xún)優(yōu)勢(shì)及示例詳解

    這篇文章主要為大家介紹了java使用mysql預(yù)編譯語(yǔ)句的優(yōu)勢(shì)特點(diǎn)及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 淺談Java中的LinkedHashSet哈希鏈表

    淺談Java中的LinkedHashSet哈希鏈表

    這篇文章主要介紹了淺談Java中的LinkedHashSet哈希鏈表,LinkedHashSet 是 Java 中的一個(gè)集合類(lèi),它是 HashSet 的子類(lèi),并實(shí)現(xiàn)了 Set 接口,與 HashSet 不同的是,LinkedHashSet 保留了元素插入的順序,并且具有 HashSet 的快速查找特性,需要的朋友可以參考下
    2023-09-09
  • java 使用JDOM解析xml文件

    java 使用JDOM解析xml文件

    java中如何使用JDOM解析xml文件呢?以下小編就用實(shí)例為大家詳細(xì)的介紹一下。需要的朋友可以參考下
    2013-07-07
  • SpringBoot整合MyBatis超詳細(xì)教程

    SpringBoot整合MyBatis超詳細(xì)教程

    這篇文章主要介紹了SpringBoot整合MyBatis超詳細(xì)教程,下面從配置模式、注解模式、混合模式三個(gè)方面進(jìn)行說(shuō)明MyBatis與SpringBoot的整合,需要的朋友可以參考下
    2021-05-05
  • 可能是全網(wǎng)最詳細(xì)的springboot整合minio教程

    可能是全網(wǎng)最詳細(xì)的springboot整合minio教程

    MinIO是全球領(lǐng)先的對(duì)象存儲(chǔ)先鋒,在標(biāo)準(zhǔn)硬件上,讀/寫(xiě)速度上高達(dá)183 GB/秒和171 GB/秒,下面這篇文章主要給大家介紹了關(guān)于springboot整合minio的相關(guān)資料,這個(gè)教程可能是全網(wǎng)最詳細(xì)的,需要的朋友可以參考下
    2022-06-06
  • java日期格式化YYYY-MM-dd遇坑指南小結(jié)

    java日期格式化YYYY-MM-dd遇坑指南小結(jié)

    本文主要介紹了java日期格式化YYYY-MM-dd遇坑指南小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • application作用域?qū)崿F(xiàn)用戶(hù)登錄擠掉之前登錄用戶(hù)代碼

    application作用域?qū)崿F(xiàn)用戶(hù)登錄擠掉之前登錄用戶(hù)代碼

    這篇文章主要介紹了application作用域?qū)崿F(xiàn)用戶(hù)登錄擠掉之前登錄用戶(hù)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot整合Quartz及異步調(diào)用的案例

    SpringBoot整合Quartz及異步調(diào)用的案例

    Quartz是一個(gè)完全由java編寫(xiě)的開(kāi)源作業(yè)調(diào)度框架、它的簡(jiǎn)單易用受到業(yè)內(nèi)人士的一致好評(píng),這篇文章主要介紹了SpringBoot整合Quartz及異步調(diào)用,需要的朋友可以參考下
    2023-03-03
  • Java實(shí)現(xiàn)員工管理系統(tǒng)

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

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

最新評(píng)論