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:使用路径参数相关推荐
- Java EE 8 MVC:控制器的详细介绍
Java EE MVC是为Java EE 8规划并在JSR-371中指定的基于动作的新MVC框架. 这是我的Java EE 8 MVC教程的第二篇文章. 第一篇文章介绍了基础知识,并展示了如何开始使用 ...
- Java EE 8 MVC:使用表单参数
在前两篇文章中,我们了解了如何在即将到来的Java EE MVC框架中使用查询和路径参数 . 这篇文章重点介绍表单参数. 当您使用发布请求提交Web表单时,表单值将作为请求正文的一部分发送. 媒体类型 ...
- Java EE 8 MVC:使用查询参数
在上一篇有关新Java EE MVC框架的文章中,我们详细介绍了Controllers . 在本篇和以下文章中,我们将看到如何在MVC控制器中访问各种类型的请求数据. Java EE MVC大量使用了 ...
- Java EE 8 MVC:全局异常处理
在之前的先前文章中,我们了解了在Java EE MVC中访问请求信息(例如查询或路径参数 )的各种方法. 这篇文章显示了如何将全局异常处理应用于MVC应用程序. 假设我们有一个控制器方法可能抛出Ill ...
- Java EE 8 MVC:Ozark入门
大约一年前, 针对Java EE 8宣布了一个新的基于动作的MVC框架,简称为MVC. MVC(在JSR 371中指定)基于JAX-RS,并与Java EE技术(如CDI和Bean验证)集成. MVC ...
- Java EE 8 MVC:使用bean参数
在上一篇文章中,我们看到了如何在MVC Controller中访问query , path和form参数 . 这篇文章展示了如何使用@BeanParam批注将多个参数映射到一个对象. 让我们重用关于表 ...
- java ee编译器_Java EE 8 MVC:控制器的详细介绍
java ee编译器 Java EE MVC是为Java EE 8计划并在JSR-371中指定的基于动作的新MVC框架. 这是我的Java EE 8 MVC教程的第二篇文章. 第一篇文章介绍了基础知识 ...
- jakarta_适用于Java EE / Jakarta EE开发人员的Micronaut
jakarta 城镇中有一个名为Micronaut的新微服务框架. 在这篇文章中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发人 ...
- jakarta ee_适用于Java EE / Jakarta EE开发人员的Micronaut
jakarta ee 城镇中有一个名为Micronaut的新微服务框架. 在本文中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发 ...
最新文章
- 计算机组成原理读写周期波形图,第3章存储器层次结构-1讲述.ppt
- C#进行MapX二次开发之鹰眼实现
- python id()函数(返回对象在内存地址中的唯一标识)
- Common-lang包中StringUtils用法
- NSWindowController的初始化创建代码
- centos7编译 openjdk8
- pytorch之object.grad.zero_()
- http://blog.51cto.com/yfsoft/324291
- 斐波那契查找算法中为什么需要把数组长度扩充到f[k]-1而不是f[k]或者f[k+1]
- oss上传判断_React实现阿里云OSS上传文件的示例
- BZOJ3505 [Cqoi2014]数三角形
- mac android 文件管理器,PC和Mac浏览安卓手机上文件最快的方式,只需两步
- python第一阶段小项目作业练习
- 计算各种图形的周长(接口与多态)(Java)
- 新型冠状病毒的信息汇总与分析 (形态,分类,基因组,进化,变异,流行病学)
- 名编辑电子杂志大师教程 | 如何直接输出安卓apk格式?
- logstash的lumberjack协议解析
- 如何在微信小程序中使用php和mysql_微信小程序php后台实现
- Django框架初体验(二)
- GO笔记之为什么要学习GO
热门文章
- Tomcat Get请求的巨坑
- 配置环境变量 path
- 对数据进行插入操作并且获取主键的值
- bs架构 erp 进销存_从应用架构看生鲜电商信息化建设
- 转:聊聊开发中幂等性问题(*)
- oracle密码不能重复用_重复码
- java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
- streaming api_通过Spring Integration消费Twitter Streaming API
- java8根据某个id删选_Java 8可选
- sql limit 子句_Java 8流中的常见SQL子句及其等效项