成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

spring參數(shù)傳遞和檢驗(yàn)

iflove / 1186人閱讀

摘要:背景在請(qǐng)求時(shí),要對(duì)參數(shù)進(jìn)行檢查,以前一直使用如下方式來獲取參數(shù),在參數(shù)特別多的時(shí)候,代碼很不簡(jiǎn)潔。使用注解來對(duì)參數(shù)進(jìn)行校驗(yàn)?zāi)茏尨a更整潔。

1.背景

在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更整潔。

2.使用

本文以實(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 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;
}

使用@Valid注解進(jìn)行參數(shù)檢查

在沒有使用BindingResult時(shí),程序會(huì)拋出空指針等異常信息,不能返回自定義信息,網(wǎng)上查了一下需要使用BindingResult來處理Error信息,自定義返回錯(cuò)誤數(shù)據(jù)。

@NotNull,@Pattern,@Size,@Max,@Min,@Digits是我在項(xiàng)目中經(jīng)常使用的注解

大家可以關(guān)注我的公眾號(hào):不知風(fēng)在何處,相互溝通,共同進(jìn)步。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67350.html

相關(guān)文章

  • BeanUtils工具使用細(xì)節(jié)

    摘要:拷貝操作又一個(gè)非常好用的工具類和中分別存在一個(gè),提供了對(duì)。除了支持基本類型以及基本類型的數(shù)組之外,還支持這些類的對(duì)象,其余一概不支持。而且,由于這些類都是采用反射機(jī)制實(shí)現(xiàn)的,對(duì)程序的效率也會(huì)有影響。因此,慎用或者使用看效果如何 java bean拷貝操作又一個(gè)非常好用的工具類 BeanUitls :spring (org.springframework.beans.BeanUtils)...

    afishhhhh 評(píng)論0 收藏0
  • 3.10、在方法參數(shù)上使用@ModelAttribute注解

    摘要:本節(jié)解釋它用在參數(shù)上的情形。一個(gè)用在方法參數(shù)上的注解指示了參數(shù)應(yīng)該從模型這里所說的模型指中獲取。方法是一種常用的從數(shù)據(jù)庫(kù)中獲取屬性的方式,可以通過使用注解把這種屬性在各個(gè)請(qǐng)求之間共享。下一步是數(shù)據(jù)綁定。 ??這一部分實(shí)例見這個(gè)項(xiàng)目的 mvc 分支下的 ModelAttrArgsController.java ??上節(jié)說過,@ModelAttribute可以用在方法或方法參數(shù)上。本節(jié)解...

    huhud 評(píng)論0 收藏0
  • 一起來學(xué)SpringBoot | 第八篇:通用Mapper與分頁(yè)插件的集成

    摘要:通用是為了解決使用中的基本操作,使用它可以很方便的進(jìn)行開發(fā),可以節(jié)省開發(fā)人員大量的時(shí)間。當(dāng)該參數(shù)設(shè)置為時(shí),時(shí)會(huì)查詢第一頁(yè),超過總數(shù)時(shí),會(huì)查詢最后一頁(yè)。 SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個(gè) WEB 工...

    韓冰 評(píng)論0 收藏0
  • SpringMVC之源碼分析--HandlerMapping(一)

    摘要:接口接口作用是將請(qǐng)求映射到處理程序,以及預(yù)處理和處理后的攔截器列表,映射是基于一些標(biāo)準(zhǔn)的,其中的細(xì)節(jié)因不同的實(shí)現(xiàn)而不相同。該參數(shù)是類型,作用是檢查所有的映射解析器或使用或?yàn)榈?,默認(rèn)為,即從上下文中檢查所有的。 概述 在Spring MVC啟動(dòng)章節(jié)https://segmentfault.com/a/1190000014674239,介紹到了DispatcherServlet的onRef...

    ralap 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<