Java EE 8 MVC:使用查询参数
在上一篇有关新Java EE MVC框架的文章中,我们详细介绍了Controllers 。 在本篇和以下文章中,我们将看到如何在MVC控制器中访问各种类型的请求数据。
Java EE MVC大量使用了JAX-RS,我们将在本篇和下一篇文章中看到的大多数内容都是JAX-RS的功能。 因此,如果您熟悉JAX-RS,那么您可能不会在本文中学到很多新知识。
查询参数
这篇文章着重于查询参数。 如果阅读我的Java EE MVC入门文章,您可能已经知道@QueryParam
批注。 @QueryParam
最常见的用例是将查询参数映射到控制器方法参数。
例如:
@Controller
@Path("query-params")
public class QueryParamsController {@GETpublic String queryParams(@QueryParam("name") String name) {...}
}
如果我们现在将HTTP GET请求发送到:
/query-params?name=john
字符串“ john
”将作为name
参数传递给方法queryParams()
。
类型转换
使用@QueryParam
可以将查询参数自动转换为各种类型。
例如:
public enum Role {admin, reporter, accountant
}
@Controller
@Path("query-params")
public class QueryParamsController {@GETpublic String queryParams(@QueryParam("id") long id,@QueryParam("name") String name,@QueryParam("role") Role role) {...}
}
我们现在可以发送这样的请求:
/query-params?id=42&name=john&role=admin
如果目标类型与以下规则之一匹配,则查询参数可以自动转换为类型:
- 它是原始类型
- 该类型具有一个接受单个
String
参数的构造函数 - 该类型具有一个名为
valueOf()
或fromString()
的静态工厂方法,带有一个String
参数 - 类型是
List<T>
,Set<T>
; 或SortedSet<T>
,其中T匹配先前的规则之一
在前面的示例中,查询参数id
自动转换为long
。 如果缺少id
参数或无法转换为long
,则将引发异常。 也可以使用Long
代替long
。 在这种情况下,如果缺少id
参数,则会将null
传递给controller方法。
枚举默认情况下具有valueOf()
方法。 因此,查询参数role
可以自动转换为相应的枚举值。
在字段和方法上使用
@QueryParam
不限于方法参数。 也可以将查询参数映射到字段或方法,如以下示例所示:
@Controller
@Path("query-params-fields")
public class QueryParamsFieldController {@QueryParam("id")private Long id;@QueryParam("role")private Role role;private String name;@QueryParam("name")public void setName(String name) {this.name = name;}@GETpublic String queryParams() {// use id, role and name}
}
如果我们现在将HTTP GET请求发送到:
/query-params-fields?name=john&id=42&role=reporter
在调用queryParams()
之前,将参数设置为id
, role
和name
字段(通过setName()
)。
不要忘记为每个请求都创建了该类的新实例,因此拥有包含请求信息的字段是安全的。
快速总结
@QueryParam
批注可用于获取查询参数。 @QueryParam
可以用于字段,方法和方法参数。 只要目标类型是基本类型,包含String构造函数或包含valueOf()
或fromString()
工厂方法,查询参数就可以自动转换为各种类型。
- 您可以在GitHub上找到所有显示示例的源代码。
翻译自: https://www.javacodegeeks.com/2016/01/java-ee-8-mvc-working-query-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中使用查询参数 . 这篇文章继续与一个非常相似的主题:路径参数. 路径参数是请求路径的动态部分,可以使用@Path注释指定. 例如: @Contr ...
- 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教程的第二篇文章. 第一篇文章介绍了基础知识 ...
- java ee domain作用_java EE应用概述
1.javaEE应用的分层模型 不管是经典的Java EE架构,还是轻量级的Java EE架构,大致上都可以分为以下几层: Damain Object(领域对象)层:该层是由系列的POJO(普通的,传 ...
- 基于java高校教师管理系统_基于Java EE高校教师继续教育管理系统的设计和实现...
2016年第9期 科 技 广 场 总第178期 基于Java EE高校教师继续教育管理 系统的设计和实现 陈 强 (广东科技学院计算机系,广东 东莞 523083) 摘要:本文对广东科技学院继续教育管 ...
最新文章
- python cookbook pdf下载-Python Cookbook 第3版 中文版.pdf
- 返回语句C语言return关键字
- jsp页面遍历后台传递的对象
- mysql查询结果单位换算后小数位数的保留方式
- 流量难、获客难、增长难?增长黑客思维“解救”B端业务
- 软工实践——团队作业需求规格说明书——原型UI设计
- CorelDRAWX4的VBA插件开发(二十九)使用C++制作动态连接库DLL辅助VBA构键强大功能-(3)制作最简单的可供调用的DLL
- OpenCore黑苹果引导配置说明-基于OpenCore-0.7.1-07-06正式版
- mysql锁定某个库_mysql 表锁定,库锁定
- mysql中查询没有选修某两门课的_mysql-学生表32题
- 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
- iOS 第四天之ViewController
- win10未能解析服务器名,win10系统提示“无法解析服务器的dns地址”的修复方法...
- 抗干扰神器光耦的原理及应用
- 最新网狐旗舰版整理、编译和搭建教程
- ecef与enu的转换
- (Winserver 2019) Hyper-V的安装与使用教程
- 小巧 linux 网页浏览器,冷门软件!几款干净极简浏览器,小巧强大、高效出众...
- 【SSM架构】博客系统开发(七)-登陆界面
- 深度学习-nlp系列(2)文本分类(Bert)pytorch