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

資訊專欄INFORMATION COLUMN

3.6、@RequestParam 和 @RequestBody

iKcamp / 3025人閱讀

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

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

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

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

    /**
     * 使用 @RequestParam 時(shí),請(qǐng)求參數(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)情況下,使用這個(gè)注解的參數(shù)是必須的,但是你可以通過設(shè)置@RequestParamrequired屬性為false來指定參數(shù)是可選的(如: @RequestParam(path="id", required=false))。

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

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

② 使用@RequestBody注解映射請(qǐng)求體

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

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

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

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

StringHttpMessageConverter轉(zhuǎn)換字符串

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

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

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

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


    
        
            
            
        
    





    
    



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

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

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

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

相關(guān)文章

  • spring-mvc注解

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

    EdwardUp 評(píng)論0 收藏0
  • spring-boot上傳

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

    fnngj 評(píng)論0 收藏0
  • SpringMVC入門筆記

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

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

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

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

    摘要:背景在請(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代...

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

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

0條評(píng)論

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