成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

iflove / 1141人閱讀

摘要:背景在請求時,要對參數(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()){
            //取出第一條錯誤信息返回
            List 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)常使用的注解

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67350.html

相關(guān)文章

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

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

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

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

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

    摘要:通用是為了解決使用中的基本操作,使用它可以很方便的進行開發(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 工...

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

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

    ralap 評論0 收藏0

發(fā)表評論

0條評論

iflove

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<