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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring MVC 基于URL的拦截和映射规则

發布時間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC 基于URL的拦截和映射规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?Spring MVC 基于URL的映射規則(注解版)

url-pattern

如果看過前一篇入門的帖子,應該了解到spring mvc在啟動前必須要在web.xml中配置servlet,這樣才能攔截到想要映射的url地址。

<servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup> </servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>*.html</url-pattern> </servlet-mapping>

其中servlet配置了servlet的實現類,而servlet-mapping則定義了spring mvc起作用的url模式,常見的配置有三種:

  • /?這個斜杠,表示攔截所有的url,如/test,/test.html
  • /*?這個模式包含/,可以多攔截以*.jsp結尾的url
  • *.xxx?這個攔截固定結尾的url,常見的如*.do,*.json等等

RequestMapping()

基于注解風格的Spring MVC就是通過這個方法來定義映射的url的,常使用的方式如下:

基于普通的url

這種是最簡單的url映射,可以接收到localhost:8080/contextName/hello這樣的請求

@RequestMapping("/hello")public @ResponseBody String test() {return "hello!";}

基于多個普通的url路徑

RequestMapping可以同時指定多個url,映射到同一個應答邏輯中:

//普通的url路徑映射@RequestMapping(value={"/multi1","/multi2","/test/multi"})public @ResponseBody String multiUrl() {return "test multi url";}

基于路徑變量的URL映射

這種URL映射可以直接在路徑上指定變量,通過@PathVariable可以獲得對象。

//基本的URL模板映射@RequestMapping(value="/user1/{name}")public @ResponseBody String basicUrl1(@PathVariable String name){return "hello"+name;}@RequestMapping(value="/user2/{name}/test")public @ResponseBody String basicUrl2(@PathVariable String name){return "hello"+name+"test";}@RequestMapping(value="/user1/{name}/test/{age}")public @ResponseBody String basicUrl3(@PathVariable String name,@PathVariable int age){return "hello"+name+" age"+age;}

基于通配風格的url映射

第一種:

@RequestMapping(value="/ant1?")public @ResponseBody String ant1(){return "ant1?";}
  • 支持下面風格:
localhost:8080/context/ant12 或者 localhost:8080/context/ant1a

第二種:

@RequestMapping(value="/ant2*")public @ResponseBody String ant2(){return "ant2*";}
  • 支持下面風格:
localhost:8080/context/ant2aaaa 或者 localhost:8080/context/ant2

第三種:

@RequestMapping(value="/ant3/*")public @ResponseBody String ant3(){return "ant3/*";}
  • 支持下面風格:
localhost:8080/context/ant3/aaaa 或者 localhost:8080/context/ant3/123

第四種:

@RequestMapping(value="/ant4/**")public @ResponseBody String ant4(){return "ant4/**";}
  • 支持下面風格
localhost:8080/context/ant4/ 或者 localhost:8080/context/ant4/aaa 或者 localhost:8080/context/ant4/aaa/123

混用統配和路徑變量

//混用@RequestMapping(value="/ant5/**/{name}")public @ResponseBody String ant5(@PathVariable String name){return "ant+url "+name;}

它能匹配

localhost:8080/context/ant5/123 或者 localhost:8080/context/ant5/aaa/123 或者 localhost:8080/context/ant5/aaa/123/test

最后一個會被當做name值

基于正則的url映射

這個比較有意思,它支持{名稱:正則表達式}的寫法,以另一種風格限制url的映射。

//正則表達式@RequestMapping(value="/student/{name:\\w+}-{age:\\d+}")public @ResponseBody String regUrl(@PathVariable String name,@PathVariable int age){return "name:"+name+" age:"+age;}

例如上面的URL就只能匹配如:

localhost:8080/context/student/wangwu-33 或者 localhost:8080/context/student/zhao4-22

參考

1?開勇學Spring mvc?—— 不得不說,這個講的很全
2?URL到Action的映射規則


總結

以上是生活随笔為你收集整理的Spring MVC 基于URL的拦截和映射规则的全部內容,希望文章能夠幫你解決所遇到的問題。

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