Java EE 8 MVC:使用路径参数
在上一篇文章中,我們看到了如何在Java EE MVC中使用查詢參數 。 這篇文章繼續與一個非常相似的主題:路徑參數。
路徑參數是請求路徑的動態部分,可以使用@Path注釋指定。
例如:
@Controller @Path("path-params") public class PathParamsController {@GET@Path("/date/{year}/{month}")public String pathParamDate(@PathParam("year") int year, @PathParam("month") int month) {...} }Paths參數在@Path批注內用大括號括起來。 在此示例中,定義了兩個路徑參數:年和月。
使用@PathParam可以將路徑參數映射到方法參數。
我們可以通過發送請求到
/path-params/date/2016/01在這種情況下,2016和1將作為年和月參數傳遞。
類型轉換
路徑參數使用與查詢參數相同的類型轉換規則( 在上一篇博客文章中進行了解釋 )。
例如,我們可以將路徑參數轉換為枚舉值,如下所示:
public enum Role {admin, reporter, accountant }@Controller @Path("path-params") public class PathParamsController {@GET@Path("/roles/{role}")public String pathParamUsers(@PathParam("role") Role role) {...} }如果我們現在向發送請求
/path-params/roles/admin字符串admin被轉換為相應的枚舉常量。
在字段和方法上使用@PathParam
像@QueryParam一樣,@PathParam的用法不限于方法參數。 也可以使用@PathParam注釋字段或設置器。
例如:
@Controller @Path("path-params") public class PathParamsController {@PathParam("category")private String category;@GET@Path("/categories/{category}")public String findByCategory() {// work with category} }將路徑參數與模式一起使用
可以為路徑變量定義更具體的模式。 因此,可以在路徑變量的名稱之后添加正則表達式。
例如:
@Controller @Path("path-params") public class PathParamsController {@GET@Path("/users/{id : \\d+}")public String findUserById(@PathParam("id") long id) {...}@GET@Path("/users/{name : [a-zA-Z]+}")public String findUserByName(@PathParam("name") String name) {...} }在這里,我們定義了兩種監聽/ users / {variable}的控制器方法:
- 僅當數字ID是請求路徑的一部分時才調用findUserById()
- 如果path參數與正??則表達式[a-zA-Z] +相匹配,則使用findUserByName()。
因此,如果我們向發送請求
/path-params/users/123將調用findUserById()并將ID作為ID傳遞123。
向發送請求
/path-params/users/john調用findUserByName()并傳遞john作為名稱。
快速總結
@PathParam可用于提取使用@Path定義的路徑參數。 與@QueryParam一樣,@ PathParam可以用于方法參數,實例字段和方法。
使用@Path定義路徑參數時,可以使用正則表達式來定義特定的路徑模式。
- 您可以在GitHub上找到所有顯示示例的源代碼。
翻譯自: https://www.javacodegeeks.com/2016/02/java-ee-8-mvc-working-path-parameters.html
總結
以上是生活随笔為你收集整理的Java EE 8 MVC:使用路径参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 集成电路设计中主要的EDA工具
- 下一篇: 码农心目中的高富帅甲骨文公司在走下坡路