請求引數和路徑變數都可以用於傳送值給伺服器。二者都是url的一部分。請求引數採用key=value形式,並用「&」分隔。
例如,下面的url帶有乙個名為productid的請求引數,其值為3:
http://localhost:8080/專案名/view-product?productid=3
在傳統的servlet程式設計中,可以使用httpservletrequest的getparameter方法來獲取乙個請求引數值:
spring mvc 提供了乙個更加簡單的方法來獲取請求引數值:
使用org.springframework.web.blind.annotation.requestparam註解型別來註解方法引數。
例如,下面的方法包含了乙個獲取請求引數productid值的引數。
public void sendproduct (@requestparam int productid)
正如你看到的,@requestparam註解的引數型別不一定是字串。
路徑變數類似請求引數,但沒有key部分,只有乙個值。
例如,在專案中,view-product動作對映到如下url:
/view-product/productid
其中的productid是表示產品識別符號的整數。
在spring mvc中,productid稱為路徑變數,用來傳送乙個值到伺服器。
下面的viewproduct方法演示了乙個路徑變數的使用。
使用路徑變數:
然後,在標籤名中新增乙個同名變數,並加上@pathvariable註解。當viewproduct方法被呼叫時,請求url的id值將被複製到路徑變數中,並可以在方法中使用。路徑變數的型別可以不是字串。spring mvc將盡力轉換成乙個非字串型別。
可以在請求對映中使用多個路徑變數。例如,下面定義了userid和orderid兩個路徑變數。
有時,使用路徑變數時會遇到乙個小問題:在某些情況下,瀏覽器可能會誤解路徑變數。
瀏覽器會(正確)認為abc是乙個動作。任何靜態檔案路徑的解析,如css檔案,將使用http://example/context
作為基本路徑。
這就是說,若伺服器傳送的網頁中包含img元素:
該瀏覽器將試圖通過來載入logo.png資源。
然而,若乙個程式被部署為預設上下文(預設上下文是乙個空字串),則對於同乙個目標的url:
下面是帶有路徑變數的url:
/1
在這種情況下,瀏覽器會認為abc是上下文,沒有動作。如果在頁面中使用,
瀏覽器將試圖通過/logo.png
來載入影象資源,並且它將找不到該影象。
這時,一般通過使用jstl標記的url。標籤會通過正確解析url來修復該問題。例如,annotated2中所有的jsp頁面匯入的所有css,從
修改為
若程式不在預設上下文中,則它會被轉換成如下形式:
SpringMVC學習之請求引數繫結
請求引數的繫結 即從客戶端提交引數值給web端 請求引數繫結 在方法中如何獲取傳來的username和password?請求傳入的key和形參名要一致 public string testparams string username,string password 請求引數繫結到實體類中 實體類 a...
springmvc請求引數
1.獲取基本型別的引數 requestparam 獲取請求引數。requestheader cookievalue 1 不使用註解的方式。如果頁面直接傳入乙個引數。那麼直接在方法的引數上,設定乙個同名的引數。即可獲取到該引數。2 使用requestparam可以在方法的引數上註解。指定獲取的引數名。...
SpringMVC 請求引數
一 獲取單個引數 requestparam value required true,defaultvalue value 指定要獲取的引數的key required true 這個引數是否是必須的 defaultvalue 預設值,沒帶預設null 1.requestparam 獲取請求路徑 後面引...