版權(quán)聲明:本文為博主原創(chuàng)文章,博客地址:http://blog.csdn.net/a67474506?viewmode=contents
1.1.?@RequestMapping映射請求
SpringMVC?使用?@RequestMapping?注解為控制器指定可以處理那些URL?請求
@requestMapping??可以定義在?類?和?方法?上?
[java]?view plaincopy
package?com.ibigsea.springmvc.helloworld;????import?org.springframework.stereotype.Controller;??import?org.springframework.web.bind.annotation.RequestMapping;????@Controller??public?class?HelloWorld?{????????????????@RequestMapping("/hello")??????public?String?helloWorld()?{??????????System.out.println("hello?world");??????????return?"helloworld";??????}??}?? [java]?view plaincopy
package?com.ibigsea.springmvc.helloworld;????import?org.springframework.stereotype.Controller;??import?org.springframework.web.bind.annotation.RequestMapping;????@Controller??@RequestMapping("/hello")??public?class?HelloWorld?{????????????????@RequestMapping("/world")??????public?String?helloWorld(){??????????System.out.println("hello?world");??????????return?"helloworld";??????}??}?? @RequestMapping
–?類定義處:提供初步的請求映射信息。相對于?WEB?應(yīng)用的根目錄
–?方法處:提供進(jìn)一步的細(xì)分映射信息。相對于類定義處的?URL。若
類定義處未標(biāo)注?@RequestMapping,則方法處標(biāo)記的?URL?相對于
WEB?應(yīng)用的根目錄
DispatcherServlet?截獲請求后,就通過控制器上
@RequestMapping?提供的映射信息確定請求所對應(yīng)的處理方法。
@RequestMapping?除了可以使用請求?URL?映射請求外,
還可以使用請求方法、請求參數(shù)及請求頭映射請求
1.2.?@RequestMapping限定請求方法、請求參數(shù)、請求頭
[java]?view plaincopy
????@RequestMapping(value="/get",method?=?RequestMethod.GET)??????public?String?get(){??????????System.out.println("get");??????????return?"get";??????}????????????@RequestMapping(value="/post",method?=?RequestMethod.POST)??????public?String?post(){??????????System.out.println("post");??????????return?"post";??????}????????????????@RequestMapping(value="/params",params="name")??????public?String?params(String?name){??????????System.out.println("hello?"+name);??????????return?"helloworld";??????}????????????????@RequestMapping(value="/headers",headers="Content-Type:text/html;charset=UTF-8")??????public?String?headers(){??????????System.out.println("headers");??????????return?"helloworld";??????}?? 1.3.?@RequestMapping匹配符
–??:匹配文件名中的一個字符
–?*:匹配文件名中的任意字符
–?**:**?匹配多層路徑
實例:
URL?:?/user/*/create
--?/user/bigsea/create?、?/user/sea/create?等URL
URL?:?/user/**/create
--?/user/big/sea/create?、?/user/sea/big/create?等URL
URL?:?/user/create??
--?/user/createaa?、/user/createbb
1.4.?@PathVariable?注解
帶占位符的?URL?是?Spring3.0?新增的功能,該功能在SpringMVC?向?REST?目標(biāo)挺進(jìn)發(fā)展過程中具有里程碑的意義
通過?@PathVariable?可以將?URL?中占位符參數(shù)綁定到控制器處理方法的入?yún)⒅?#xff1a;URL?中的?{xxx}?占位符可以通過@PathVariable("xxx")?綁定到操作方法的入?yún)⒅小?/p> [java]?view plaincopy
????@RequestMapping("/pathVariable/{name}")??????public?String?pathVariable(@PathVariable("name")String?name){??????????System.out.println("hello?"+name);??????????return?"helloworld";??????}?? JSP(這里指定全路徑):
[java]?view plaincopy
<h1>pathVariable</h1>??<a?href="${pageContext.request.contextPath}/hello/pathVariable/bigsea"?>?name?is?bigsea?</a>??<br/>??<a?href="${pageContext.request.contextPath}/hello/pathVariable/sea"?>?name?is?sea</a>??<br/>?? 運行結(jié)果:
[plain]?view plaincopy
hello?bigsea??hello?sea?? 1.5.?@RequestParam?綁定請求參數(shù)
在處理方法入?yún)⑻幨褂?@RequestParam?可以把請求參數(shù)傳遞給請求方法
–?value:參數(shù)名
–?required:是否必須。默認(rèn)為?true,?表示請求參數(shù)中必須包含對應(yīng)的參數(shù),若不存在,將拋出異常
[java]?view plaincopy
????@RequestMapping("/requestParam")??????public?String?requestParam(@RequestParam(value="firstName",required=false)String?firstName,??????????????@RequestParam(?value="lastName"?,required?=?true)?String?lastName,??????????????@RequestParam(value="age",required?=?false?,defaultValue="0")int?age)?{??????????System.out.println("hello?my?name?is?"?+?(firstName?==?null???""?:?firstName)??????????????????????????????????????????+?lastName?+?","?+?age?+"?years?old?this?year");??????????return?"helloworld";??????}?? Jsp:
[java]?view plaincopy
<a?href="requestParam?firstName=big&lastName=sea"?>?name?is?bigsea?,?age?is?0?</a>??<br/>??<a?href="requestParam?lastName=sea&age=23"?>?name?is?sea?,?age?is?23?</a>??<br/>??<a?href="requestParam"?>?throws?exception?</a>?? 運行結(jié)果:
[plain]?view plaincopy
hello?my?name?is?bigsea,0?years?old?this?year??hello?my?name?is?sea,23?years?old?this?year??
1.6.?@RequestHeader?獲取請求頭
請求頭包含了若干個屬性,服務(wù)器可據(jù)此獲知客戶端的信息,通過?@RequestHeader?即可將求頭中的屬性值綁定到處理方法的入?yún)⒅?/p> [java]?view plaincopy
@RequestMapping("/requestHeader")??public?String?requestHeader(@RequestHeader("User-Agent")String?userAgent,@RequestHeader("Cookie")String?cookie){??????System.out.println("userAgent:["+userAgent+"]");??????System.out.println("cookie:["+cookie+"]");??????return?"helloworld";??}?? JSP:
[java]?view plaincopy
<a?href="requestHeader"?>?requestHeader?</a>?? 運行結(jié)果:
[plain]?view plaincopy
userAgent:[Mozilla/5.0?(Windows?NT?6.3;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/44.0.2383.0?Safari/537.36]??cookie:[JSESSIONID=DA3B15F559349EA2C3F08BE772FCAFD8]?? 1.7.?@CookieValue?獲取?cookie值
[java]?view plaincopy
????public?String?cookieValue(@CookieValue(value?=?"JSESSIONID",?required=?false)String?session){??????????System.out.println("JESSIONID:["+session+"]");??????????return?"helloworld";??????}??
JSP:
[java]?view plaincopy
<a?href="cookieValue"?>?cookieValue?</a>??
運行結(jié)果
[plain]?view plaincopy
JESSIONID:[A4196EEDFD829B40CC1975F029A61328]?? 1.8.?源碼分析
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。