bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

SpringMVC請求參數接收的全面總結教程-創新互聯

前提

目前創新互聯已為近1000家的企業提供了網站建設、域名、網絡空間、網站托管、企業網站設計、宿豫網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

在日常使用SpringMVC進行開發的時候,有可能遇到前端各種類型的請求參數,這里做一次相對全面的總結。SpringMVC中處理控制器參數的接口是HandlerMethodArgumentResolver,此接口有眾多子類,分別處理不同(注解類型)的參數,下面只列舉幾個子類:

  • RequestParamMethodArgumentResolver:解析處理使用了@RequestParam注解的參數、MultipartFile類型參數和Simple類型(如long、int)參數。
  • RequestResponseBodyMethodProcessor:解析處理@RequestBody注解的參數。
  • PathVariableMapMethodArgumentResolver:解析處理@PathVariable注解的參數。

實際上,一般在解析一個控制器的請求參數的時候,用到的是HandlerMethodArgumentResolverComposite,里面裝載了所有啟用的HandlerMethodArgumentResolver子類。而HandlerMethodArgumentResolver子類在解析參數的時候使用到HttpMessageConverter(實際上也是一個列表,進行遍歷匹配解析)子類進行匹配解析,常見的如MappingJackson2HttpMessageConverter。而HandlerMethodArgumentResolver子類到底依賴什么HttpMessageConverter實例實際上是由請求頭中的ContentType(在SpringMVC中統一命名為MediaType,見org.springframework.http.MediaType)決定的,因此我們在處理控制器的請求參數之前必須要明確外部請求的ContentType到底是什么。上面的邏輯可以直接看源碼AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters,思路是比較清晰的。在@RequestMapping注解中,produces和consumes就是和請求或者響應的ContentType相關的:

  • consumes:指定處理請求的提交內容類型(ContentType),例如application/json, text/html,只有命中了才會接受該請求。
  • produces:指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回,如果返回的是JSON數據一般使用application/json;charset=UTF-8。

另外提一點,SpringMVC中默認使用Jackson作為JSON的工具包,如果不是完全理解透整套源碼的運作,一般不是十分建議修改默認使用的MappingJackson2HttpMessageConverter(例如有些人喜歡使用FastJson,實現HttpMessageConverter引入FastJson做轉換器)。

SpringMVC請求參數接收

其實一般的表單或者JSON數據的請求都是相對簡單的,一些復雜的處理主要包括URL路徑參數、文件上傳、數組或者列表類型數據等。另外,關于參數類型中存在日期類型屬性(例如java.util.Date、java.sql.Date、java.time.LocalDate、java.time.LocalDateTime),解析的時候一般需要自定義實現的邏輯實現String->日期類型的轉換。其實道理很簡單,日期相關的類型對于每個國家、每個時區甚至每個使用者來說認知都不一定相同。在演示一些例子主要用到下面的模特類:

@Data
public class User {

 private String name;
 private Integer age;
 private List<Contact> contacts;
}

@Data
public class Contact {

 private String name;
 private String phone;
}

網站欄目:SpringMVC請求參數接收的全面總結教程-創新互聯
鏈接分享:http://vcdvsql.cn/article46/cscceg.html

成都網站建設公司_創新互聯,為您提供企業網站制作、建站公司、營銷型網站建設微信公眾號、網站改版、商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設