在上一篇有关新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()之前,将参数设置为idrolename字段(通过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:使用查询参数相关推荐

  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中使用查询参数 . 这篇文章继续与一个非常相似的主题:路径参数. 路径参数是请求路径的动态部分,可以使用@Path注释指定. 例如: @Contr ...

  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. java ee domain作用_java EE应用概述

    1.javaEE应用的分层模型 不管是经典的Java EE架构,还是轻量级的Java EE架构,大致上都可以分为以下几层: Damain Object(领域对象)层:该层是由系列的POJO(普通的,传 ...

  9. 基于java高校教师管理系统_基于Java EE高校教师继续教育管理系统的设计和实现...

    2016年第9期 科 技 广 场 总第178期 基于Java EE高校教师继续教育管理 系统的设计和实现 陈 强 (广东科技学院计算机系,广东 东莞 523083) 摘要:本文对广东科技学院继续教育管 ...

最新文章

  1. python cookbook pdf下载-Python Cookbook 第3版 中文版.pdf
  2. 返回语句C语言return关键字
  3. jsp页面遍历后台传递的对象
  4. mysql查询结果单位换算后小数位数的保留方式
  5. 流量难、获客难、增长难?增长黑客思维“解救”B端业务
  6. 软工实践——团队作业需求规格说明书——原型UI设计
  7. CorelDRAWX4的VBA插件开发(二十九)使用C++制作动态连接库DLL辅助VBA构键强大功能-(3)制作最简单的可供调用的DLL
  8. OpenCore黑苹果引导配置说明-基于OpenCore-0.7.1-07-06正式版
  9. mysql锁定某个库_mysql 表锁定,库锁定
  10. mysql中查询没有选修某两门课的_mysql-学生表32题
  11. 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
  12. iOS 第四天之ViewController
  13. win10未能解析服务器名,win10系统提示“无法解析服务器的dns地址”的修复方法...
  14. 抗干扰神器光耦的原理及应用
  15. 最新网狐旗舰版整理、编译和搭建教程
  16. ecef与enu的转换
  17. (Winserver 2019) Hyper-V的安装与使用教程
  18. 小巧 linux 网页浏览器,冷门软件!几款干净极简浏览器,小巧强大、高效出众...
  19. 【SSM架构】博客系统开发(七)-登陆界面
  20. 深度学习-nlp系列(2)文本分类(Bert)pytorch

热门文章

  1. 注意!在subList生成子列表之后,一定不要随便更改原列表
  2. Ajax基本案例详解之$.post的实现
  3. 考研英语二大纲22年考研
  4. 创建对象并且使用对象的属性和方法
  5. SQL注入问题及预防方法
  6. Ubuntu 免密登录
  7. 大神开发的模板框架 包括常见的功能
  8. 公式冒号是什么意思_三角学中,这么一堆公式其实就说了2个事而已
  9. skimage直方图如何保存_LightGBM的参数详解以及如何调优
  10. 奇技淫巧:在spring官网上下载历史版本的spring插件,springsource-tool-suite