jersey学习:开发环境搭建(系列二)
概述
该篇给大家讲述下jersey开发环境的搭建过程,我所使用的工具清单:
服务器:tomcat 8.0.30
jdk: 1.7
jersey : 2.22.1(点击下载)
eclipse : Mars.2
servlet : 2.5
搭建步骤
- 使用eclipse创建一个web project
- 将jersey包下的lib、api、ext(选择性添加,比如osgi相关包不必添加),添加到WEB-INF/lib下
- 配置web.xml,这一步很关键,具体的配置如下
<servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class> org.glassfish.jersey.servlet.ServletContainer </servlet-class> <init-param> <!-- 指定jersey的配置 --> <param-name>javax.ws.rs.Application</param-name> <param-value>com.bella.jersey.config.ApplicationConfig</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey-serlvet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> - 编写ApplicationConfig,设置资源的初始化配置
package com.bella.jersey.config; import org.glassfish.jersey.server.ResourceConfig; public class ApplicationConfig extends ResourceConfig{ public ApplicationConfig () { // 设置resource资源所在包路径 packages("com.bella.jersey.resource"); } } - 编写Pojo,我这里写个Person,这里所用的注解是基于JAXB的
package com.bella.jersey.domain; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Person{ @XmlElement private int age; @XmlElement private String name; public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } } -
编写resource
package com.bella.jersey.resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/person") public class PersonResource { @GET @Path("/{id}") @Produces(MediaType.APPLICATION_XML) public Person get(@PathParam("id")Long id) { Person p = new Person(); p.setAge(21); p.setName("kevin"); return p; } } -
启动tomcat
-
地址栏请求测试http://localhost:9090/jersey/person/1
结果报500错误,解决办法是将person中get方法全部删除
修改后的Personpackage com.emin.jersey.domain; import java.io.Serializable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Person{ @XmlElement private int age; @XmlElement private String name; public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } } -
重新启动,地址栏输入http://localhost:9090/jersey/person/1得到期望的结果
<person> <age>21</age> <name>kevin</name> </person>
总结
- web.xml需要设置javax.ws.rs.Application,指定resource的配置
- resource配置中package方法指定resource的包路径
- pojo类中不需要get方法,不然application/xml输出格式会报错
Time is a great teacher, but unfortunately it kills all its pupils.

浙公网安备 33010602011771号