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()之前,将参数设置为idrolename字段(通过setName() )。

不要忘记为每个请求都创建了该类的新实例,因此拥有包含请求信息的字段是安全的。

快速总结

@QueryParam批注可用于获取查询参数。 @QueryParam可以用于字段,方法和方法参数。 只要目标类型是基本类型,包含String构造函数或包含valueOf()fromString()工厂方法,查询参数就可以自动转换为各种类型。

  • 您可以在GitHub上找到所有显示示例的源代码。

翻译自: https://www.javacodegeeks.com/2016/01/java-ee-8-mvc-working-query-parameters.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 10g r2 for solaris x86,Oracle10g for Solaris9(x86)安装指南

Oracle10g for Solaris9(x86)安装指南一、安装环境检查&#xff1a;机器环境&#xff1a;cpu:P41.7G&#xff0c;内存:1G&#xff1b;OS&#xff1a;Windows 2000 Advaced Server(sp4)虚拟机系统平台&#xff1a;Vmware Workstation4.5.2Solaris9(x86)虚拟机资源分配&#xff1…

百度脑图

1.地址&#xff1a;http://naotu.baidu.com/ 2.简介&#xff1a;在线创作思维导图。 3.优势&#xff1a; 3.1在线使用&#xff0c;学习成本低。 3.2有多种导图展示方式。 4.缺点&#xff1a; 4.1只有思维导图一种形式比较单一转载于:https://www.cnblogs.com/hmdlys/p/6252071.…

oracle 导出 cuow,直通伍伦贡大学的升学保障— 伍伦贡大学学院(UOWC)

伍伦贡大学学院是直属大学的桥梁课程提供者&#xff0c;为没有达到直入本科的学生提供另一种进入大学的途径&#xff0c;也为大学提供语言类课程。自1989年成立以来&#xff0c;为大学输送了数以千计的优秀学生。目前学院有来自世界30多个国家超过2000名在校生。在伍伦贡大学学…

async 和 await 的进阶

异常的捕获&#xff1a; static void Main(string[] args){//继续我们的异步编程的使用嘀呀&#xff1b;//关于主线程是无法捕获我们子线程中的异常滴滴啊&#xff1b;var t DoExceptionAsync();t.Wait();Console.WriteLine($"{nameof(t.Status)}: {t.Status}"); …

spring依赖注入_Spring3:类型安全依赖项注入

spring依赖注入在从Spring跳到类型安全依赖注入之前&#xff0c;我想讨论一下我们之前所做的方式。 我们一直在借助Spring的Autowired注释按类型使用依赖项注入。 像这样的东西会注入Spring Bean。 Autowired private StudentDao studentDao; // Autowires by type. Injects th…

linux系统查看当前安装字库,linux下怎样安装中文字体?

1、首先禁用xfs服务器。 运行Setup命令&#xff0c;在服务项中中止xfs随系统运行的特性。之所以禁用xfs服务器主要是因为xfs会自动更新字体目录下的fonts.dir文件&#xff0c;从而影响我们所做的修改。2、将选中的字体字库拷贝到相关的目录。 一般选用simsun.ttf为基本的字体(据…

Spark Shell的简单使用

简介 Spark shell是一个特别适合快速开发Spark原型程序的工具&#xff0c;可以帮助我们熟悉Scala语言。即使你对Scala不熟悉&#xff0c;仍然可以使用这个工具。Spark shell使得用户可以和Spark集群交互&#xff0c;提交查询&#xff0c;这便于调试&#xff0c;也便于初学者使用…

linux vps 命令,CentOS最常用Linux vps操作命令整理大全

vps用的centos系统&#xff0c;为了方便查看整理了一些Linux常用命令&#xff1b;忘记的时候翻出来看看&#xff0c;不用二次浪费时间东找西找浪费时间&#xff1b;文件和目录:# cd /home 进入 ‘/home’ 目录# cd .. 返回上一级目录# cd ../.. 返回上两级目录# cd – 返回上次…

Java的20年:重大事件的时间表

翻译自: https://www.javacodegeeks.com/2015/12/2-decades-java-timeline-notable-events.html

w10系统自带linux系统,win10下,内置linux系统的安装和体验,你造吗?

原标题&#xff1a;win10下&#xff0c;内置linux系统的安装和体验&#xff0c;你造吗&#xff1f;众所周知&#xff0c;windows系统和linux系统一直是水火不容&#xff0c;而在最新的win10系统却完美兼容了linux系统&#xff0c;但是在默认情况下是关闭的&#xff0c;需要我们…

北风网09.接收普通消息2

该公众号暂时无法提供服务,请稍后再试 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6273960.html

中科软测试面试题2019_2019国考成绩今日是否会发布,笔试120能进面不?

2019国考成绩要出来了不&#xff1f;2019国考成绩何时出来&#xff1f;现在已是1月中旬&#xff0c;许多考生对于自己的国考笔试成绩都非常期待&#xff0c;而最近风声四起&#xff0c;搞得考生们人心慌慌&#xff0c;那么2019国考成绩要出来了不&#xff1f;现在我们一起来分析…

C# 数据库连接测试以及备份

现在我们要做一个如图5.1的数据库连接配置&#xff0c;从界面上看有三个功能需要实现&#xff1a;从配置文件中读取数据库连接的相关属性、备份数据库、测试连接。 现在我们就一个一个开始讲解。 图5.1 1.从配置文件中读取数据库连接的相关属性 1) 配置文件中的数据库连接: &l…

Linux程序选择boy糊者girl,linux脚本程序练习-Go语言中文社区

1、编写一个名为iffile程序&#xff0c;它执行时判断/bin目录下date文件是否存在&#xff1f;2、编写一个名为greet的问候程序&#xff0c;执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨&#xff0c;中午到下午六点为下午&#xff0c;下午六点到半夜为晚…

什么是初效过滤器_初效过滤器怎么样 初效过滤器特点介绍【详解】

说起过滤器&#xff0c;我们大家都不陌生。现在环境污染严重&#xff0c;我们大多数家庭都在使用 净水器 、 空气净化器 等家电设备&#xff0c;它们需要依靠过滤器来净化水质和空气&#xff0c;让我们的生活更加健康。不过&#xff0c;您知道初效过滤器安装的步骤是什么吗?下…

组件 模块 插件_播放2 –模块,插件有什么区别?

组件 模块 插件关于Play 2模块和插件似乎有些困惑。 我想这是因为两者经常是同义词。 在Play&#xff08;两个版本-1和2&#xff09;中&#xff0c;存在明显的差异。 在本文中&#xff0c;我将研究什么是插件&#xff0c;如何在Java和Scala中实现插件&#xff0c;以及如何从模块…

云计算hcie贴吧_专业介绍|计算机网络技术

点击蓝字关注我们01专业特色计算机网络技术专业所有在职专任教师都具有高级职称和硕士学位&#xff0c;双师比例为75&#xff05;&#xff1b;在企业核心岗位工作的兼职老师4人。筹备组建华为ICT学院。华为ICT学院是华为公司主导的&#xff0c;面向全球在校大学生传递华为ICT技…

url重写(urlrewrite)的一些系统变量

学php也有3年了&#xff0c;一直对url重写不是很了解&#xff0c;本学用到的话都是百度一下&#xff0c;再复制作简单修改&#xff0c;一些变量的参数都不太了解什么意思&#xff0c;难得今天有时间&#xff0c;做个笔记吧&#xff01; 1&#xff09;可用的一些系统变量&#x…

linux日志自动按天保存,linux实现按天生成日志文件并自动清理

linux实现按天生成日志文件并自动清理前篇文章中讲到如何在Linux crontab创建每秒执行的方法&#xff0c;高人可能早意识到日志文件没做处理&#xff0c;假如没人工处理久了日后越来越大肯定会出现问题&#xff0c;当然人工处理也不现实。为了解决这个问题&#xff0c;所以有了…

使用Java成功生成代码的7个技巧

作为介绍&#xff0c;最近我有点安静&#xff0c;部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库&#xff0c;我们证明了该库可以在低个位数微秒内解析和存储消息。 当然&#xff0c;它利用了我们的开源产品Chronicle-Queu…