Spring中的PathVariable注釋

2021-10-06 15:17:16 字數 1950 閱讀 9684

就像@requestparam一樣,@pathvariable批註用於從http request中提取資料。但是,它們略有不同。區別在於@requestparam從url獲取引數,而@pathvariable只是從uri中提取引數。

讓我們假設你有乙個以下 url 的**:

上面 url 中的1表示雇員的 id。 到目前為止一切ok。 但是現在,從 spring 控制器看,路徑看起來是這樣的(取決於您給 id 的名稱) :

/employee/
上面的 url 路徑對我們有什麼幫助? 因為這個{}語法(碰巧被稱為 uri 模板) ,你現在可以把它傳遞給乙個使用@pathvariable 的方法,你的方法和注釋看起來如下所示:

(value=

"/employee/"

, method=requestmethod.get)

(@pathvariable

id)從上面的**片段可以看到,現在「 id」將從路徑中引用。 讓我們用乙個真實的例子來嘗試:

@controller

public

class

employeemanager")

public string pathvariabledemo

(model model,

@pathvariable

int id)

}

現在,spring檢視輸出id引數,並將其與模板變數「 id」進行匹配。

請記住,如果我的**使用「 id」(引數)命名為其他名稱,那麼它將無法工作。 然而,如果你不想對引數和模板變數使用相同的名字,你可以像這樣命名 pathvariable 注釋的名字:

@controller

public

class

employeemanager")

public string pathvariabledemo

(model model,

@pathvariable

("id"

)int somerandomname)

}

從上面的示例中可以看到,我將引數的名稱更改為 _somerandomname,_但還新增了@pathvariable(「 id」),它再次指定了我們要引用的模板變數。

最終您有兩個選擇:

為方法引數使用相同的名稱

在@pathvariable批註中指定模板變數的名稱

如果你可以有多個@pathvariable 會怎麼樣? 我們能做到嗎? 是的,我們可以! 事實上,這和新增乙個@pathvariable 非常相似。

我們來演示一下:

@controller

public

class

employeemanager

/employee/"

, method=requestmethod.get)

public string pathvariabledemo

(@pathvariable

("company"

) string companyname,

@pathvariable

("id"

)int employeeid)

}

從上面的**片段中可以看到,我們有兩個模板變數:

companyid

然後,我們提取每個模板變數,然後通過指定方法引數所引用的臨時變數將它們「分配」給方法引數。

儘管@pathvariable和@requestparam都用於從url提取值,但是可以根據url的設計使用它們。

通常,@pathvariable通常用於restful web服務中,而@requestparam用於從查詢引數中提取資料。

Spring複習筆記 Spring中的Bean

注意構造器例項化 最常用 靜態工廠方式例項化 例項工廠方式例項化 singleton 單例 始終使用的同乙個物件 預設 prototype 原型 每次都是乙個新的bean例項 request session globalsession websocket init method屬性 用於指定bean...

Spring基礎 Spring中的AOP框架

oop 物件導向程式設計 提供 從上到下 的關係,而aop 面向方面程式設計 提供一種 橫切 的方式,也可以說是 從左到右 簡單來說就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複 降低模組間的耦合度,並有利於未來的可操作性和可維護性。可能光是說aop的定義,大家...

Spring中的QuartzJobBean的使用

一 quartz的特點 按作業類的繼承方式來分,主要有以下兩種 1.作業類繼承org.springframework.scheduling.quartz.quartzjobbean類的方式 2.作業類不繼承org.springframework.scheduling.quartz.quartzjob...