日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

03-SpringMVC-获得用户请求数据

發布時間:2025/5/22 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03-SpringMVC-获得用户请求数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、處理requet uri 部分:@PathVariable

  • @PathVariable是Spring3.0新增的功能

  • 通過@PathVariable可以將URL中占位符參數綁定到控制器處理方法的傳入參數中。源碼如下

? ??

  • URL中的{xxx}點位符,通過@PathVariable("xxx")綁定到操作方法中的傳入參數

1、測試

  • 控制器

@RequestMapping("/testPathVariable/{id}")public?String?testPathVariable(@PathVariable("id")?Integer?id){System.out.println("PathVariable??"+id);return?"success";}
  • 請求

<a?href="requestData/testPathVariable/2">測試?@PathVariable</a>

2、總結

  • @RequestMapping("/testPathVariable/{id}")也可以放在類上面,如下所示

@Controller@RequestMapping("/owners/{ownerId}")public?class?RelativePathUriTemplateController?{??@RequestMapping("/pets/{petId}")??public?void?findPet(@PathVariable?String?ownerId,?@PathVariable?String?petId,?Model?model)?{????????//?implementation?omitted??}}

? ??? ??那么它對應的請求:/owers/1/pets/2

  • 上面代碼把URI template 中變量 ownerId的值和petId的值,綁定到方法的參數上。若方法參數名稱和需要綁定的uri template中變量名稱不一致,需要在@PathVariable("name")指定uri template中的名稱。

二、處理request header部分@RequestHeader, @CookieValue

1、@RequestHeader

1.1 知識點

  • 請求頭,包含了若干屬性,服務器可據此獲知客戶端的信息(可以通過firebug來查看)

? ??

  • 通過@RequestHeader即可將請求頭的屬性值綁定到處理方法的傳入參數中。源碼如下

? ??

1.2 測試

  • 控制器類

@RequestMapping("/testRequestHeader")public?String?testRequestHeader(@RequestHeader(value="Accept-Language")?String?al){System.out.println("Accept-Language:"+al);return?"success";}
  • 請求

<a?href="requestData/testRequestHeader">測試@RequestHeader</a>

2、使用@CookieValue綁定請求中的Cookie值

2.1、知識點

  • 查看Cookie

? ??? ??

  • @CookieValue可以處理方法傳入綁定某個Cookie值

2.2 測試

  • 測試類

@RequestMapping("/testCookieValue")public?String?testCookieValue(@CookieValue(value="JSESSIONID")?String?jSession){System.out.println("JSESSIONID:"+jSession);return?"success";}
  • 請求

<a?href="requestData/testCookieValue">測試@CookieValue</a>

三、處理request body部分的注解:@RequestParam, ?使用POJO對象綁定請求參數值;

1、使用@RequestParam綁定請求參數值

1.1 知識點

  • ? 源代碼

? ??? ??

  • 在處理方法的傳入參數處,使用@RequestParam可以把請求參數傳遞給方法

    • value:參數名

    • required:是否必須,默認為true,表示參數中必須包含對應的參數,若不存在,將拋出異常。

    • defaultValue:請求參數的默認值

1.2、測試

  • 控制器類

@RequestMapping("/testRequestParam")public?String?testRequestParam(@RequestParam(value="userName",required=false)?String?userName,@RequestParam(value="age",defaultValue="20")?int?age,@RequestParam(value="password")?String?password){System.out.println("userName:"+userName);System.out.println("age:"+age);System.out.println("password:"+password);return?"success";}
  • 請求

<a?href="requestData/testRequestParam">測試@RequestParam(沒有傳值)</a><br><a?href="requestData/testRequestParam?userName=imentors&password=123456">測試@RequestParam(傳值)</a>

2、使用POJO對象綁定請求參數值

2.1、 知識點

  • SpringMVC會按請求參數名和POJO屬性名進行自動匹配,自動為該對象填充屬性值

  • 支持級聯屬性。如dept.deptId、dept.address.tel

2.2 、測試

  • bean

public?class?Address?{private?String?province;private?String?city;@Overridepublic?String?toString()?{return?"Address?[province="?+?province?+?",?city="?+?city?+?"]";}}public?class?User?{private?String?username;private?String?password;private?String?email;private?int?age;@Overridepublic?String?toString()?{return?"User?[username="?+?username?+?",?password="?+?password+?",?email="?+?email?+?",?age="?+?age?+?",?address="?+?address+?"]";}}
  • 控制器

@RequestMapping("/testPojo")public?String?testPojo(User?user){System.out.println("testPOJO:"+user);return?"success";}
  • 請求

<form?action="requestData/testPojo"?method="post">?? username:<input?type="text"?name="username"/>?? <br/>?? password:<input?type="password"?name="password"/>?? <br/>?? email:<input?type="text"?name="email"/>?? <br/>?? age:<input?type="text"?name="age"/>?? <br/>?? city:<input?type="text"?name="address.city"/>?? <br/>?? province:<input?type="text"?name="address.province"/>?? <br/>?? <input?type="submit"?value="提交"/>?? </form>

2.3 總結

  • 如果請求的表單參數中不存在pojo對象中的某個域名稱的項目,則綁定后pojo該屬性為null。?

  • 如果請求的表單參數中存在pojo對象中沒有包含的域的項目,則綁定后該參數丟失。?

  • 如果表單項目的數據會自動從String轉換為相應pojo的域類型。但如果類型無法轉換,則報錯。如果我輸入age為dafsdfa,那么報錯。

四、使用servlet api對象作為入參

1、使用servlet api對象作為入參

1.1、知識點

  • 使用servlet api類作為入參時,spring mvc會自動將web層對應的servlet API對象傳遞給處理方法入參,處理方法入參可同時使用其它符合要求的入參,位置順序無特殊要求。

  • 如果處理方法自行使用HttpServletResponse返回響應,則處理方法返回值需設置成void.

  • Spring mvc在org.springframework.web.context.request包下提供了若干個可代理Servlet原生API類的接口

? ??? ??

1.2 測試

  • 控制器

@RequestMapping("/testServletApi")public?String?testServletApi(HttpServletRequest?request,HttpServletResponse?response){System.out.println("testServletAPI:"+request+","+response);return?"success";}
  • 請求

<a?href="requestData/testServletApi">測試ServletApi</a>

1.3 總結

? ??可以使用Servlet原生的Api作為目標方法的參數,具體支持以下類型

  • HttpServletRequest

  • HttpServletResponse

  • HttpSession

  • Java.security.Principal

  • InputStream

  • OutputStream

  • Reader

  • Writer

關注我們

? ??師享空間的宗旨是分享知識,傳播價值。關注我們,及時獲得更多信息。




捐贈我們
? ??如果您對我們的成果表示認同并且覺得對你有所幫助,歡迎您對我們捐贈^_^。

? ?????

轉載于:https://blog.51cto.com/imentors/1720552

總結

以上是生活随笔為你收集整理的03-SpringMVC-获得用户请求数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。