在上一篇文章中,我们看到了如何在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:使用路径参数相关推荐

  1. Java EE 8 MVC:控制器的详细介绍

    Java EE MVC是为Java EE 8规划并在JSR-371中指定的基于动作的新MVC框架. 这是我的Java EE 8 MVC教程的第二篇文章. 第一篇文章介绍了基础知识,并展示了如何开始使用 ...

  2. Java EE 8 MVC:使用表单参数

    在前两篇文章中,我们了解了如何在即将到来的Java EE MVC框架中使用查询和路径参数 . 这篇文章重点介绍表单参数. 当您使用发布请求提交Web表单时,表单值将作为请求正文的一部分发送. 媒体类型 ...

  3. Java EE 8 MVC:使用查询参数

    在上一篇有关新Java EE MVC框架的文章中,我们详细介绍了Controllers . 在本篇和以下文章中,我们将看到如何在MVC控制器中访问各种类型的请求数据. Java EE MVC大量使用了 ...

  4. Java EE 8 MVC:全局异常处理

    在之前的先前文章中,我们了解了在Java EE MVC中访问请求信息(例如查询或路径参数 )的各种方法. 这篇文章显示了如何将全局异常处理应用于MVC应用程序. 假设我们有一个控制器方法可能抛出Ill ...

  5. Java EE 8 MVC:Ozark入门

    大约一年前, 针对Java EE 8宣布了一个新的基于动作的MVC框架,简称为MVC. MVC(在JSR 371中指定)基于JAX-RS,并与Java EE技术(如CDI和Bean验证)集成. MVC ...

  6. Java EE 8 MVC:使用bean参数

    在上一篇文章中,我们看到了如何在MVC Controller中访问query , path和form参数 . 这篇文章展示了如何使用@BeanParam批注将多个参数映射到一个对象. 让我们重用关于表 ...

  7. java ee编译器_Java EE 8 MVC:控制器的详细介绍

    java ee编译器 Java EE MVC是为Java EE 8计划并在JSR-371中指定的基于动作的新MVC框架. 这是我的Java EE 8 MVC教程的第二篇文章. 第一篇文章介绍了基础知识 ...

  8. jakarta_适用于Java EE / Jakarta EE开发人员的Micronaut

    jakarta 城镇中有一个名为Micronaut的新微服务框架. 在这篇文章中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发人 ...

  9. jakarta ee_适用于Java EE / Jakarta EE开发人员的Micronaut

    jakarta ee 城镇中有一个名为Micronaut的新微服务框架. 在本文中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发 ...

最新文章

  1. 计算机组成原理读写周期波形图,第3章存储器层次结构-1讲述.ppt
  2. C#进行MapX二次开发之鹰眼实现
  3. python id()函数(返回对象在内存地址中的唯一标识)
  4. Common-lang包中StringUtils用法
  5. NSWindowController的初始化创建代码
  6. centos7编译 openjdk8
  7. pytorch之object.grad.zero_()
  8. http://blog.51cto.com/yfsoft/324291
  9. 斐波那契查找算法中为什么需要把数组长度扩充到f[k]-1而不是f[k]或者f[k+1]
  10. oss上传判断_React实现阿里云OSS上传文件的示例
  11. BZOJ3505 [Cqoi2014]数三角形
  12. mac android 文件管理器,PC和Mac浏览安卓手机上文件最快的方式,只需两步
  13. python第一阶段小项目作业练习
  14. 计算各种图形的周长(接口与多态)(Java)
  15. 新型冠状病毒的信息汇总与分析 (形态,分类,基因组,进化,变异,流行病学)
  16. 名编辑电子杂志大师教程 | 如何直接输出安卓apk格式?
  17. logstash的lumberjack协议解析
  18. 如何在微信小程序中使用php和mysql_微信小程序php后台实现
  19. Django框架初体验(二)
  20. GO笔记之为什么要学习GO

热门文章

  1. Tomcat Get请求的巨坑
  2. 配置环境变量 path
  3. 对数据进行插入操作并且获取主键的值
  4. bs架构 erp 进销存_从应用架构看生鲜电商信息化建设
  5. 转:聊聊开发中幂等性问题(*)
  6. oracle密码不能重复用_重复码
  7. java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
  8. streaming api_通过Spring Integration消费Twitter Streaming API
  9. java8根据某个id删选_Java 8可选
  10. sql limit 子句_Java 8流中的常见SQL子句及其等效项