SpringMVC框架 第4章 處理請(qǐng)求數(shù)據(jù)


4?處理請(qǐng)求數(shù)據(jù)

4.1請(qǐng)求處理方法簽名

? 1)? Spring MVC 通過分析處理方法的簽名,HTTP請(qǐng)求信息綁定到處理方法的相應(yīng)人參中。

? 2)? Spring MVC 對(duì)控制器處理方法簽名的限制是很寬松的,幾乎可以按喜歡的任何方式對(duì)方法進(jìn)行簽名。

e```````````````````````````````````````````````````````````````````````````````

4.5 使用POJO作為參數(shù)

? 4)? Spring MVC 框架會(huì)將 HTTP 請(qǐng)求的信息綁定到相應(yīng)的方法入?yún)⒅?,并根?jù)方法的返回值類型做出相應(yīng)的后續(xù)處理。

4.2 @RequestParam注解

1)在處理方法入?yún)⑻幨褂?@RequestParam 可以把請(qǐng)求參數(shù)傳遞給請(qǐng)求方法

2)value:參數(shù)名

3)required:是否必須。默認(rèn)為 true, 表示請(qǐng)求參數(shù)中必須包含對(duì)應(yīng)的參數(shù),若不存在,將拋出異常

4)defaultValue: 默認(rèn)值,當(dāng)沒有傳遞參數(shù)時(shí)使用該值

4.2.1 實(shí)驗(yàn)代碼

? 1)? 增加控制器方法

4.3 @RequestHeader 注解

? 1 )? 使用 @RequestHeader 綁定請(qǐng)求報(bào)頭的屬性值

? ?2)? 請(qǐng)求頭包含了若干個(gè)屬性,服務(wù)器可據(jù)此獲知客戶端的信息,通過 @RequestHeader 即

  • 可將請(qǐng)求頭中的屬性值綁定到處理方法的入?yún)⒅?/b>

4.3.1 實(shí)驗(yàn)代碼

4.4 @CookieValue 注解

? 1)? 使用 @CookieValue 綁定請(qǐng)求中的 Cookie 值

? 2)? @CookieValue 可讓處理方法入?yún)⒔壎硞€(gè) Cookie 值

4.4.1實(shí)驗(yàn)代碼

? 1)? 增加控制器方法

/

4.5 使用POJO作為參數(shù)?

? 1)? 使用 POJO 對(duì)象綁定請(qǐng)求參數(shù)值

? 2)? Spring MVC 會(huì)按請(qǐng)求參數(shù)名和 POJO 屬性名進(jìn)行自動(dòng)匹配,自動(dòng)為該對(duì)象填充屬性值支持級(jí)聯(lián)屬性。如:deptId、dept.address.tel 等

? 4.5.1實(shí)驗(yàn)代碼

? 1)? 增加控制器方法、表單頁(yè)面

? 4)? 如果中文有亂碼,需要配置字符編碼過濾器,且配置其他過濾器之前,

如(HiddenHttpMethodFilter),否則不起作用。(思考method=”get”請(qǐng)求的亂碼問題怎么解決的)

4.6 使用Servlet原生API作為參數(shù)

? 1)? MVC 的 Handler 方法可以接受哪些 ServletAPI 類型的參數(shù)

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • security.Principal
  • Locale
  • InputStream
  • OutputStream
  • Reader
  • Writer

? 2)? 源碼參考:AnnotationMethodHandlerAdapterL866

? 3)?

4.6.1 實(shí)驗(yàn)代碼