国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

3.6、@RequestParam 和 @RequestBody

iKcamp / 2958人閱讀

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

??這一部分實例見項目的 mvc 分支下的 ParamAndBodyController.java

① 使用@RequestParam綁定請求參數到方法參數

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

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

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

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

??如果目標方法的類型參數不是String類型的,將自動應用類型轉換。見 “方法參數和類型轉換”一節.

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

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

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

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

??通過使用一個HttpMessageConverter,你能夠把請求體轉換為方法參數。HttpMessageConverter負責把 HTTP 請求消息轉換為一個對象,也把一個對象轉換為 HTTP 請求體。RequestMappingHandlerAdapter支持@RequestBody注解使用下面的默認的HttpMessageConverters:

ByteArrayHttpMessageConverter轉換字節數組

StringHttpMessageConverter轉換字符串

FormHttpMessageConverter在表單數據和MultiValueMap對象之間轉換.

SourceHttpMessageConverter在請求體和javax.xml.transform.Source之間轉換.

??更多關于這些轉換器的信息,見消息轉換器。也要注意,如果使用MVC命名空間或者MVCJava配置,一個更大范圍的消息轉換器被默認注冊。更多信息見18.16.1節“使用MVC Java配置或者MVC XML命名空間”。

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


    
        
            
            
        
    





    
    



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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65158.html

相關文章

  • spring-mvc注解

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

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

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

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

    摘要:簡介注解用于修飾的方法,根據的的內容,通過適當的轉換為客戶端需要格式的數據并且寫入到的數據區,從而不通過視圖解析器直接將數據響應給客戶端。并且這些解析器都實現了接口,在接口中有四個最為主要的接口方法。 SpringMVC 細節方面的東西很多,所以在這里做一篇簡單的 SpringMVC 的筆記記錄,方便以后查看。 Spring MVC是當前最優秀的MVC框架,自從Spring 2.5版本...

    gekylin 評論0 收藏0
  • springcloud 基于feign的服務接口的統一hystrix降級處理

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

    hersion 評論0 收藏0
  • spring參數傳遞檢驗

    摘要:背景在請求時,要對參數進行檢查,以前一直使用如下方式來獲取參數,在參數特別多的時候,代碼很不簡潔。使用注解來對參數進行校驗能讓代碼更整潔。 1.背景 在spring請求時,要對參數進行檢查,以前一直使用如下方式來獲取參數,在參數特別多的時候,代碼很不簡潔。 String userId= request.getParameter(userId); 后來使用注解@RequestParam代...

    iflove 評論0 收藏0

發表評論

0條評論

iKcamp

|高級講師

TA的文章

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