1. 程式人生 > >SpringMVC 中 url-patter 與 @RequestMapping 的對應問題

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

Djangourl命名反轉url,應用名稱空間和例項名稱空間

url命名 為什麼需要給url命名? 因為url是經常變化的。如果在程式碼中寫死可能會經常改程式碼。給url取個名字,以後使用url的時候就使用他的名字進行反轉就可以了,就不需要寫死url了。 示例: 在專案中新建一個front的app,views.py中寫入一下程式碼: fro

springMvcrestful風格的api路徑把小數點當參數,SpringMvcurl有小數點

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

SpringMVCurl-pattern配置“/”所導致的靜態資源問題

若將 DispatcherServlet 請求對映配置為 /,則 Spring MVC 將捕獲 WEB 容器的所有請求,包括靜態資源的請求, SpringMVC 會將他 們當成一個普通請求處理,因找不到對應處理器將導致錯誤。 • 可以在 SpringMVC

SpringMVCurl-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 weburl路徑的配置以及使用規則詳情(長期更新)

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

關於SpringMVCController接口的三種實現類的使用說明

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

SpringMVCRequestMapping修飾類註解

@RequestMapping 該註解除了能修飾方法,還能修飾類。 如上一文章中提到的程式碼,修改後得到: package com.yoni.springmvc.handlers; import org.springframework.stereotype.Controlle

mongo的遊標資料一致性的取捨 spring-data-mongodb 使用原生aggregate語句 mongo的runCommand集合操作函式的關係 spring-data-mongodbmongo shell的對應關係 mongo的遊標資料一致性的取捨

除了特殊註釋外,本文的測試結果均基於 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0.6   我們在學習了一門程式語言時,一定要明白語句底層的意義,比如 User user= n