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

資訊專欄INFORMATION COLUMN

3.6、@RequestParam 和 @RequestBody

iKcamp / 2976人閱讀

摘要:負(fù)責(zé)把請求消息轉(zhuǎn)換為一個對象,也把一個對象轉(zhuǎn)換為請求體。也要注意,如果使用命名空間或者配置,一個更大范圍的消息轉(zhuǎn)換器被默認(rèn)注冊。如果沒有聲明這樣的參數(shù),一個異常將會拋出。這個異常會在中處理,并返回一個錯誤到客戶端。

??這一部分實(shí)例見項(xiàng)目的 mvc 分支下的 ParamAndBodyController.java

① 使用@RequestParam綁定請求參數(shù)到方法參數(shù)

??使用@RequestParam注解綁定請求參數(shù)到你的控制器方法中的參數(shù)。下面的代碼段展示了這種用法:

    /**
     * 使用 @RequestParam 時,請求參數(shù)名要和 @RequestParam 的值一樣,而不是和方法參數(shù)名一樣
     */
    @GetMapping("/find/pet")
    public String findPet(@RequestParam("petId") int pid, ModelMap model) 
    {

        System.out.println("--> petId : " + pid);
        
        /**
         * 將被放到響應(yīng)中,發(fā)送到客戶端
         */
        model.addAttribute("test", "Hello World");
        
        return "/examples/targets/test4";
    }

??默認(rèn)情況下,使用這個注解的參數(shù)是必須的,但是你可以通過設(shè)置@RequestParamrequired屬性為false來指定參數(shù)是可選的(如: @RequestParam(path="id", required=false))。

??如果目標(biāo)方法的類型參數(shù)不是String類型的,將自動應(yīng)用類型轉(zhuǎn)換。見 “方法參數(shù)和類型轉(zhuǎn)換”一節(jié).

??當(dāng)一個@RequestParam注解用在一個Map或者MultiValueMap類型的參數(shù)上是,這個map將包含所有請求參數(shù)

② 使用@RequestBody注解映射請求體

??方法參數(shù)注解@RequestBody指定一個方法參數(shù)應(yīng)該被綁定到 HTTP 請求體的值。例如:

    /**
     * 帶有 @RequestBody 注解的參數(shù),直接可以得到請求體
     */
    @PutMapping("/handle")
    public void handle(@RequestBody String body, Writer writer) throws IOException 
    {
        System.out.println("--> body : " + body);
        
        /**
         * 將被放到響應(yīng)中,發(fā)送到客戶端
         */
        writer.write("{ pet :" + body + " }");
    }

??通過使用一個HttpMessageConverter,你能夠把請求體轉(zhuǎn)換為方法參數(shù)。HttpMessageConverter負(fù)責(zé)把 HTTP 請求消息轉(zhuǎn)換為一個對象,也把一個對象轉(zhuǎn)換為 HTTP 請求體。RequestMappingHandlerAdapter支持@RequestBody注解使用下面的默認(rèn)的HttpMessageConverters:

ByteArrayHttpMessageConverter轉(zhuǎn)換字節(jié)數(shù)組

StringHttpMessageConverter轉(zhuǎn)換字符串

FormHttpMessageConverter在表單數(shù)據(jù)和MultiValueMap對象之間轉(zhuǎn)換.

SourceHttpMessageConverter在請求體和javax.xml.transform.Source之間轉(zhuǎn)換.

??更多關(guān)于這些轉(zhuǎn)換器的信息,見消息轉(zhuǎn)換器。也要注意,如果使用MVC命名空間或者M(jìn)VCJava配置,一個更大范圍的消息轉(zhuǎn)換器被默認(rèn)注冊。更多信息見18.16.1節(jié)“使用MVC Java配置或者M(jìn)VC XML命名空間”。

??如果你打算讀寫XML,你會需要配置一個帶有指定Marshaller和Unmarshaller(在包org.springframework.oxm中)實(shí)現(xiàn)的MarshallingHttpMessageConverter。雖然下面的例子展示了怎讓直接在你的配置中做,但是如果你的應(yīng)用程序通過 MVC 命名空間或者 MVC Java 配置,你要參考18.16.1節(jié)“使用 MVC Java 配置或者 MVC XML 命名空間”。


    
        
            
            
        
    





    
    



??一個@RequestBody方法參數(shù)可以帶有注解@Valid,此時它會被配置好的Validator實(shí)例校驗(yàn)。當(dāng)使用 MVC 命名空間或者 MVC Java 配置時,一個 JSR-303 校驗(yàn)器會自動配置進(jìn)來,如果類路徑中有一個可用的 JSR-303 實(shí)現(xiàn)的話。

??就像@ModelAttribute參數(shù)一樣,一個 Errors 參數(shù)可以用于檢查錯誤。如果沒有聲明這樣的參數(shù),一個 MethodArgumentNotValidException 異常將會拋出。這個異常會在 DefaultHandlerExceptionResolver 中處理,并返回一個400錯誤到客戶端。

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

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

相關(guān)文章

  • spring-mvc注解

    摘要:關(guān)鍵注解的關(guān)鍵注解主要有其中主要是用于標(biāo)記該類是一個控制器,用于指示的哪一個類或方法來處理請求動作,即用于標(biāo)識具體的處理器。默認(rèn)已經(jīng)裝配了作為組件的實(shí)現(xiàn)類,而由使用,將請求信息轉(zhuǎn)換為對象。 關(guān)鍵注解 springmvc的關(guān)鍵注解主要有@Controller/@RequestMapping/@RequestParam/@PathVariable/@RequestHeader/@Cooki...

    EdwardUp 評論0 收藏0
  • spring-boot上傳

    摘要:的文檔上說解決了對文件上傳的支持問題之前需要借助完成的事現(xiàn)在不需要依賴它了也就是說在中不能用實(shí)現(xiàn)接口了下面這樣定義是錯誤的我們所要做的就是什么也不做默認(rèn)就不用了下面說說具體實(shí)現(xiàn)文件單獨(dú)上傳這個只需要用就可以了文件上傳表單上傳上傳 spring-boot的文檔上說 Spring Boot embraces the Servlet 3 javax.servlet.http.Part API...

    fnngj 評論0 收藏0
  • SpringMVC入門筆記

    摘要:簡介注解用于修飾的方法,根據(jù)的的內(nèi)容,通過適當(dāng)?shù)霓D(zhuǎn)換為客戶端需要格式的數(shù)據(jù)并且寫入到的數(shù)據(jù)區(qū),從而不通過視圖解析器直接將數(shù)據(jù)響應(yīng)給客戶端。并且這些解析器都實(shí)現(xiàn)了接口,在接口中有四個最為主要的接口方法。 SpringMVC 細(xì)節(jié)方面的東西很多,所以在這里做一篇簡單的 SpringMVC 的筆記記錄,方便以后查看。 Spring MVC是當(dāng)前最優(yōu)秀的MVC框架,自從Spring 2.5版本...

    gekylin 評論0 收藏0
  • springcloud 基于feign的服務(wù)接口的統(tǒng)一hystrix降級處理

    摘要:開發(fā)微服務(wù)時,基于來做聲明式服務(wù)接口,當(dāng)啟用服務(wù)熔斷降級時,項(xiàng)目服務(wù)眾多,每個服務(wù)接口都得寫一些重復(fù)問的服務(wù)降級處理代碼,勢必顯得枯燥無味服務(wù)接口創(chuàng)建商品修改商品刪除商品根據(jù)獲取商品信息根據(jù)條件查詢商品列表分頁排序?qū)?yīng)的熔斷降級處理類請 springcloud開發(fā)微服務(wù)時,基于feign來做聲明式服務(wù)接口,當(dāng)啟用hystrix服務(wù)熔斷降級時,項(xiàng)目服務(wù)眾多,每個Feign服務(wù)接口都得寫一...

    hersion 評論0 收藏0
  • spring參數(shù)傳遞檢驗(yàn)

    摘要:背景在請求時,要對參數(shù)進(jìn)行檢查,以前一直使用如下方式來獲取參數(shù),在參數(shù)特別多的時候,代碼很不簡潔。使用注解來對參數(shù)進(jìn)行校驗(yàn)?zāi)茏尨a更整潔。 1.背景 在spring請求時,要對參數(shù)進(jìn)行檢查,以前一直使用如下方式來獲取參數(shù),在參數(shù)特別多的時候,代碼很不簡潔。 String userId= request.getParameter(userId); 后來使用注解@RequestParam代...

    iflove 評論0 收藏0

發(fā)表評論

0條評論

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