SpringMVC 中 url-patter 與 @RequestMapping 的對應問題
原理簡述
後臺利用 SpringMVC 響應前端發起的請求時,其完整 url 會按照 DispatcherServlet 指定的 url 格式進行匹配、修剪,去掉<url-pattern>指定的上下文部分,剩餘部分 url',再由註解 @RequestMapping 轉到 Controller 特定的方法上,執行具體的處理。
舉個栗子
前端請求的完整 url:
http://localhost:8088/aaa/bbb/ccc?myParam=myValue
servlet 指定的 url 格式:
<url-pattern>/aaa/*</url-pattern>
則 @RequestMapping 的正確配置為:
@RequestMapping(value="/bbb/ccc")
public String demoMethodSignature(String myParam) { /*method code*/ }
如果RequestMapping="/aaa/bbb/ccc",則等效的完整 url 為:
http://localhost:8088/aaa/aaa/bbb/ccc?myParam=myValue
而不是希望的(強行訪問將顯示404頁面)
http://localhost:8088/aaa/bbb/ccc?myParam=myValue
可見,註解 @RequestMapping 的值是經過 <url-pattern> 類似“窄化處理”
http://localhost:8088/aaa
= http://localhost:8088 + /aaa
= 請求域名預設根路徑 + <url-pattern>顯式宣告的路徑
反之,如果註解 @RequestMapping 的值為 "/x/y/z",<url-pattern> 指定為 "/aaa/*",則訪問該 Controller 方法的等效完整 url 為:
http://localhost:8088/aaa/x/y/z =http://localhost:8088 + /aaa + /x/y/x =域名根路徑 + <url-pattern>顯式宣告的路徑 + @RequestMapping值
參考文章:
1、Spring mvc url-pattern 和@RequestMapping 對映的小問題:http://blog.csdn.net/fangchao3652/article/details/54693814
2、servlet的url-pattern匹配規則詳細描述:https://www.cnblogs.com/51kata/p/5152400.html
相關推薦
SpringMVC 中 url-patter 與 @RequestMapping 的對應問題
原理簡述 後臺利用 SpringMVC 響應前端發起的請求時,其完整 url 會按照 DispatcherServlet 指定的 url 格式進行匹配、修剪,去掉<url-pattern>指定的上下文部分,剩餘部分 url',再由註解 @RequestMap
Django中url命名與反轉url,應用名稱空間和例項名稱空間
url命名 為什麼需要給url命名? 因為url是經常變化的。如果在程式碼中寫死可能會經常改程式碼。給url取個名字,以後使用url的時候就使用他的名字進行反轉就可以了,就不需要寫死url了。 示例: 在專案中新建一個front的app,views.py中寫入一下程式碼: fro
springMvc中restful風格的api路徑中把小數點當參數,SpringMvc中url有小數點
pub springmvc line name object ews mapping html 兩種 在springMvc web項目中restful風格的api路徑中有小數點會被過濾後臺拿不到最後一個小數點的問題, 有兩種解決方案:
OpenGL中的功能與OSG對應功能
OpenGL中的功能與OSG對應功能 (摘) 將OpenGL中的功能與OSG對應功能進行列舉: OpenGL function OpenSceneGraph implementation glClear(
SpringMVC中的@Controller和@RequestMapping作用詳解
1.1 @Controller是什麼首先看個例子: @Controller表示在tomcat啟動的時候,把這個類作為一個控制器載入到Spring的Bean工廠,如果不加,就是一個普通的類,和Spring沒有半毛錢關係。 以下是兩個常見的配置: 其中,b
由SpringMVC中的Controller註解@RequestMapping引發的思考
<span style="font-family:Times New Roman;">package thinkinginjava; import java.lang.reflect.*; import java.util.ArrayList; import java.util.Collecti
SpringMVC中url-pattern配置“/”所導致的靜態資源問題
若將 DispatcherServlet 請求對映配置為 /,則 Spring MVC 將捕獲 WEB 容器的所有請求,包括靜態資源的請求, SpringMVC 會將他 們當成一個普通請求處理,因找不到對應處理器將導致錯誤。 • 可以在 SpringMVC
SpringMVC中url-pattern /和/*的區別
學習Spring的時候,在配置web.xml的時候,把url-pattern 配置成/*,啟動專案後去訪問自己的Controller總是報404.檢查了很多發現資源是存在的,配置的地址也沒有問題,為什麼會出現404錯誤呢?最後發現是自己配置的 url-patte
SpringMVC中的@requestMapping問題與controller方法的返回值問題
end pin Coding mage 返回 ren response font object @requestMapping 1、url映射 定義controller方法對應的url,進行處理器映射使用 @RequestMapping("/items") pu
獲取SpringMVC中所有RequestMapping對映URL地址
廢話不多說,直接上程式碼:public String init(HttpServletRequest request, HttpServletResponse response){ List<String> uList = new ArrayList<S
tomcat 與 java web中url路徑的配置以及使用規則詳情(長期更新)
root 每一個 ava 目錄 clip ima 文件夾 logs 需要 首先我們看一下在myeclipse中建立的java web項目的結構 在這裏我們需要註意這個webroot也就是我們在tomcat裏的webapp裏面的應用 之所以每一個項目都有這個webroot
5.oracle中一個字段中存儲'a','b'與'a'與a的寫法,存儲過程中與之對應
存儲 中一 pan 過程 col -- 寫法 style logs select ‘‘‘a‘‘,‘‘b‘‘‘ from dual; --‘a‘,‘b‘ select ‘‘‘a‘‘‘ from dual; --‘a‘ select ‘a‘ from dual; --a
springMVC中的註解@RequestParam與@PathVariable的區別
actor nal lencod mat 控制 關系 tor oid 沒有 @PathVariable綁定URI模板變量值 @PathVariable是用來獲得請求url中的動態參數的 @PathVariable用於將請求URL中的模板變量映射到功能處理方法的參數上。//配
SpringMVC中@RequestMapping參數設置
參數 決定 .post .get value VC post HR url URL路徑由value決定,eg:value="/hello"。 method參數:RequestMethod.POST,RequestMethod.GET請求方法,比如GET、POST
關於SpringMVC中Controller接口的三種實現類的使用與說明
resolv term strac editor 服務 xml配置 數據加載 edi add 要說Controller接口的實現類使用與說明之前,先簡要說明一下SpringMVC的工作原理。 ①客戶端發出一個請求,web服務器接受了這個請求後,就會與web.xml中配置的D
SpringMVC中@RequestMapping處理請求引數的@RequestParam註解
首先在頁面新增一個帶有引數的請求,分別是username和age <a href="springmvc/testRequestParam?username=yoni&age=20">Test RequestParam</a> 然後在類中新增方法
SpringMVC中的Rest風格URL
以前請求的URL寫法為 新增:/addorder 修改:/editorder?id=1 獲取:/getorder?id=1 刪除:/deleteorder?id=1 假設現在想將請求改變為: 新增:/order
SpringMVC中的@RequestMapping註解中的@PathVariable註解
先看程式碼,程式碼如下: package com.yoni.springmvc.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.a
SpringMVC中的RequestMapping修飾類註解
@RequestMapping 該註解除了能修飾方法,還能修飾類。 如上一文章中提到的程式碼,修改後得到: package com.yoni.springmvc.handlers; import org.springframework.stereotype.Controlle
mongo中的遊標與資料一致性的取捨 spring-data-mongodb 使用原生aggregate語句 mongo的runCommand與集合操作函式的關係 spring-data-mongodb與mongo shell的對應關係 mongo中的遊標與資料一致性的取捨
除了特殊註釋外,本文的測試結果均基於 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0.6 我們在學習了一門程式語言時,一定要明白語句底層的意義,比如 User user= n