Spring MVC 之請求引數和路徑變數

2022-02-03 22:09:48 字數 1716 閱讀 4610

請求引數路徑變數都可以用於傳送值給伺服器。二者都是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 獲取請求路徑 後面引...