博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jersey初体验
阅读量:7143 次
发布时间:2019-06-29

本文共 5462 字,大约阅读时间需要 18 分钟。

hot3.png

一、Jersey简介

Jersey是JAX-RS(JSR311)开源参考实现用于构建RESTful Web service。此外Jersey还提供一些额外的API和扩展机制,所以开发人员能够按照自己的需要对Jersey进行扩展。

二、项目搭建

MyEclipse2014, JDK1.7, Maven3, Jersey2.23.1

1. 新建一个web service项目,并加入maven支持

2. 配置pom.xml文件,加入jersey2.23.1的依赖包以及jetty插件

4.0.0
com.wbf
jerseyDemo
war
0.0.1-SNAPSHOT
jersey demo
http://maven.apache.org
2.23.1
UTF-8
1.7
org.glassfish.jersey.containers
jersey-container-servlet
${jersey.version}
org.glassfish.jersey.media
jersey-media-multipart
${jersey.version}
org.glassfish.jersey.media
jersey-media-json-jackson
${jersey.version}
com.fasterxml.jackson.core
jackson-annotations
2.8.0
jerseyDemo
maven-compiler-plugin
${jdk.version}
${jdk.version}
${project.build.sourceEncoding}
org.mortbay.jetty
maven-jetty-plugin
6.1.26
8888

3. 编写POJO类User

package com.wbf.jersey;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class User {	private String name;	private String age;	private String sex;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public String getAge() {		return age;	}	public void setAge(String age) {		this.age = age;	}	public String getSex() {		return sex;	}	public void setSex(String sex) {		this.sex = sex;	}		@Override	public String toString() {		return "name: " + this.getName() + ", age: " + this.getAge() + ", sex: " + this.getSex();	}}

User是一个POJO类,其重写了父类的toString()方法,加上了@XmlRootElement注解以支持向前端返回xml格式的值

4. 编写资源类RESTService

package com.wbf.jersey;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;@Path("/restService")public class RESTService {	@GET	@Produces(MediaType.TEXT_HTML)	public String getUserHello() {		return "hello!";	}		@GET	@Path("/getUserText")	@Produces(MediaType.TEXT_PLAIN)	public String getUserText() {		User user = new User();		user.setName("snail");		user.setAge("22");		user.setSex("male");		return user.toString();	}	@GET	@Path("/getUserXml")	@Produces(MediaType.APPLICATION_XML)	public User getUserXml() {		User user = new User();		user.setName("snail");		user.setAge("22");		user.setSex("male");		return user;	}	@GET	@Path("/getUserJson")	@Produces(MediaType.APPLICATION_JSON)	public User getUserJson() {		User user = new User();		user.setName("snail");		user.setAge("22");		user.setSex("male");		return user;	}}

这个类是前后端交互的类,类和方法上都有对应的JAX-RS注解,如, , @Produces, @Consumes。

5. 编写Application类:RestApplication

package com.wbf.jersey;import org.glassfish.jersey.filter.LoggingFilter;import org.glassfish.jersey.server.ResourceConfig;public class RestApplication extends ResourceConfig {	public RestApplication() {		// 服务类所在的包路径		packages("com.wbf.jersey");		// 打印访问日志,便于跟踪调试,正式发布可清除		register(LoggingFilter.class);	}}

这个类继承了jersey的资源管理类ResourceConfig,在这个类中初始化的时候,我们会注册一些信息到jersey容器,比如:告诉jersey容器应该扫描哪些包下面的类,看看这些包下哪些类是有对应JAX-RS注解的,以便管理起来

6. 配置web.xml

RestDemo
jerseyServlet
org.glassfish.jersey.servlet.ServletContainer
javax.ws.rs.Application
com.wbf.jersey.RestApplication
1
jerseyServlet
/*

这个文件中配置了jersey的核心类ServletContainer,它是个servlet。

jerseyServlet
/*

上诉servlet-mapping中的信息表示前端所有的访问都交给jerseyServlet处理,也就是交给org.glassfish.jersey.servlet.ServletContainer统一处理分配。

javax.ws.rs.Application
com.wbf.jersey.RestApplication

上诉init-param中的信息表示加载jersey核心容器ServletContainer时,加载用户自定义的类RestApplication,这个自定义类的是将一些必要的信息注入到jersey核心容器中,如:哪些类是资源类

6. 将项目部署到jetty,通过mvn jetty:run来启动

mvn compile

mvn jetty:run

通过浏览器访问

(1) http://localhost:8888/jerseyDemo/restService/

访问的最终会转到getUserHello方法上

@GET@Produces(MediaType.TEXT_HTML)public String getUserHello() {	return "hello!";}

getUserHello方法允许get方式的访问,返回值类型是TEXT_HTML,当前方法返回"hello!"

(2) http://localhost:8888/jerseyDemo/restService/getUserXml

访问最终会转到getUserXml方法上

@GET@Path("/getUserXml")@Produces(MediaType.APPLICATION_XML)public User getUserXml() {	User user = new User();	user.setName("snail");	user.setAge("22");	user.setSex("male");	return user;}

getUserXml方法允许get方式的访问,返回值类型是APPLICATION_XML,当前方法返回user,user对象会被解析成xml格式的值,最后return给前端。

(3) http://localhost:8888/jerseyDemo/restService/getUserJson

getUserJson方法允许get方式的访问,返回值类型是APPLICATION_JSON,当前方法返回user,user对象会被解析成json格式的值,最后return给前端 。

转载于:https://my.oschina.net/wangbaofeng/blog/713847

你可能感兴趣的文章
chrome扩展推荐:帮你留住每一次ctrl+c --- Clipboard History 2
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
配置一次,到处运行:将配置与运行时解耦
查看>>
菜鸟成都未来园区启动,无人车首次进入园区调拨运输环节 ...
查看>>
算法不扎实的程序员,每个都很慌
查看>>
Element 2.6.3 发布,基于 Vue 2.0 的桌面端组件库
查看>>
基于kubeadm的kubernetes高可用集群部署
查看>>
定位「数字化助手」,腾讯想用服务创新助力产业智慧升级
查看>>
golang之sync.Mutex互斥锁源码分析
查看>>
SAP增强的PA教材内容
查看>>
C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码
查看>>
Java 模拟基于UDP的Socket通信
查看>>
有关 Windows Lite 的一切,只为对抗 Chrome OS?
查看>>
NG-ZORRO 7.0.1 发布,Ant Design 的 Angular 实现
查看>>
scala笔记(三)
查看>>
大数据应用安全研究报告(11家公司实践详解)
查看>>
MES之殇和工业IOT之春
查看>>
阿里云网络漏洞扫描系统AVDS(商业化)发布
查看>>
python splinter 小坑说明
查看>>
控制input输入格式
查看>>