文档章节

JAX-RS入门 五: 自动类型转换

Yohance
 Yohance
发布于 2015/07/13 22:43
字数 508
阅读 29
收藏 0

一、默认类型转换规则

 

在上一节中,已经了解了怎么使用那个annotations去提取请求中各种信息,不过得到的信息值默认都是一个string类型。

 

这一节介绍JAX-RS一些内置的自动类型转换及其规则。

 

理论上JAX-RS可以将请求信息转换成任一Java类型,只要该Java类型满足以下条件之一:

  1. 基本类型: int、short、float、double、byte、char 或 boolean 等
  2. 定义了带单个String参数的构造方法
  3. 拥有一个static的valueOf(String)方法,并且这个方法返回这个类型的一个实例
  4. java.util.List<T>、java.util.Set<T>或java.util.SortedSet<T>,其中 T 满足条件2或者3,或者是一个String

例如:

@GET
@Path("{id}")
public String get(@PathParam("id") int id) {...}
@Path("/myservice")
public class MyService {
<span style="white-space:pre">	</span>@GET
<span style="white-space:pre">	</span>@Produces("text/html")
<span style="white-space:pre">	</span>public String get(@HeaderParam("Referer") URL referer) {
<span style="white-space:pre">		</span>...
<span style="white-space:pre">	</span>}
}
public enum Color {
	BLACK,
	BLUE,
	RED,
	WHITE,
	SILVER
}

@GET
@Path("/{model}/{year}")
@Produces("image/jpeg")
public Jpeg getPicture(@PathParam("make") String make,
	@PathParam("model") String model,
	@MatrixParam("color") Color color) {
	...
}
转list:

import java.util.List;
@Path("/customers")
public class CustomerResource {
	@GET
	@Produces("application/xml")
	public String getCustomers(
		@QueryParam("start") int start,
		@QueryParam("size") int size,
		@QueryParam("orderBy") List<String> orderBy) {
		...
	}
}

输入:GET /customers?orderBy=last&orderBy=first
如果转换失败,则认为client请求出错,返回一个404错误。

二、定义缺省值 @DefaultValue

 

通过使用@DefaultValue注释,可以给某个请求参数定义缺省值,当client的请求中未包含此参数,则缺省参数值将被使用,例如:

</pre><pre name="code" class="java">@Path("/customers")
public class CustomerResource {
	@GET
	@Produces("application/xml")
	public String getCustomers(@DefaultValue("0") @QueryParam("start") int start,
		@DefaultValue("10") @QueryParam("size") int size) {
		...
	}
} 
如果请求中未提供 start 请求参数,则缺省值0将被使用;如果请求中未包含 size 参数,则缺省值10被使用。

三、强制不解码 @Encoded

 

使用@Encoded注释,用来告诉JAX-RS,不需要自动解码,直接使用编码后的请求值,例如:

@GET
@Produces("application/xml")
public String get(@Encoded @QueryParam("something") String str) {...}






本文转载自:http://blog.csdn.net/u011700318/article/details/38558465

共有 人打赏支持
Yohance
粉丝 14
博文 82
码字总数 44971
作品 0
浦东
程序员
私信 提问
JAX-RS 从傻逼到牛叉 7:注入参数的自动类型转换

前面介绍了各种请求参数的注入,这些参数在 HTTP 请求中都是以纯文本的方式存在的。在处理参数的时候,往往需要把这些文本参数转换为 Java 对象。JAX-RS 提供了一些内置的规则里自动完成这种...

木子丰
2013/10/24
0
0
基于SOA 思想下的WebService实战资料分享

跟大家分享基于SOA 思想下的WebService实战(电子商务需求,分析,架构全涉及,百万数据优化) 课程讲解内容涵盖: 第1章 CXF框架快速起步(2课时) Webservice技术规则 Java-WebService技术规范...

abcfhl
2013/06/24
1K
7
java REST入门:使用 JAX-RS 简化 REST 应用开发

摘要: REST 简介REST 是英文 Representational State Transfer 的缩写,有中文翻译为具象状态传输。REST 这个术语是由 Roy Fielding 在他的博士论文《 Architectural Styles and the Design ...

青楼满座、只因人心寂寞
2012/11/19
0
0
使用 JAX-RS 简化 REST 应用开发

使用 JAX-RS 简化 REST 应用开发 简介: 本文将详细介绍 Java EE 6 中所引入的对 JSR-311 (JAX-RS : Java API for RESTful Web Services) 的支持,并通过一个完整的示例应用程序展示 JAX-RS...

肥皂泡2
2011/06/23
0
0
Jersey REST WebServcie Example

1 介绍 1.1 什么是JAX-RS标准 JAX-RS是java领域的REST式的WEB服务的标准规范。它的目标是这样的: (1)基于POJO,规定使用POJO来公布WEB资源 (2)以HTTP为中心,采用HTTP协议,无状态 (3...

蜡笔小小小新
2016/06/16
82
0

没有更多内容

加载失败,请刷新页面

加载更多

网友第一次开发EOS区块链的经验

在处理项目时,用Java Connector for EOS区块链编写: 创建钱包 创建帐户 创建交易 创建签名交易 在帐户之间转移代币 我遇到了各种和运行本地EOS节点需要遵循的基本步骤。这个小指南纯粹是为...

geek12345
18分钟前
1
0
mybatis insert 动态生成插入的列及插入的值

代码如下 : 1.mapper.xml 文件 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"......

qimh
27分钟前
1
0
junit启动报错 Unable to find a @SpringBootConfiguration

环境 springboot项目 工程结构: test类编写: 异常 Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test ......

zzx10
28分钟前
1
0
Html5 学习

1、mui 框架中的 plusReady 真机运行,浏览器不执行 http://ask.dcloud.net.cn/question/31708。 2、参考网络请求 仿网页 https://www.jianshu.com/u/84b5ef6309d6...

QGlaunch
29分钟前
1
0
net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.console.demo.web.model.XXX

前景: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.console.demo.web.model.XXX //jsonObject:所有参数//FreightTemplate对象里面包含一个 private List<FreightTemplateCi......

事儿爹
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部