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