jersey + tomcat 实现restful风格
本文参考 http://www.cnblogs.com/bluesfeng/archive/2010/10/28/1863816.html
环境:
idea 15.0.2
jersey 1.3
tomcat 7.0
maven 3.3.3
1.idea 基于maven 构建webapp 略过
2.项目构建完成之后pom.xml 文件加入项目所需包:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.2</version>
</dependency>
3.创建pojo类 Student:
@XmlRootElement
public class Student {
private int id;
private String name;
private String dept; public int getId() {
return id;
} public Student() {
} public Student(int id, String name, String dept) {
super();
this.id = id;
this.name = name;
this.dept = dept;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
} }
同时创建资源类:
@Path("/students")
public class RestWsDemo {
private static Logger logger = Logger.getLogger(RestWsDemo.class);
private static int index = 1;
private static Map<Integer,Student> studentList = new HashMap<Integer, Student>();
public RestWsDemo() {
if(studentList.size()==0) {
studentList.put(index, new Student(index++, "Frank", "CS"));
studentList.put(index, new Student(index++, "Jersey", "Math"));
}
}
@GET
@Path("{studentid}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Student getMetadata(@PathParam("studentid") int studentid) {
if(studentList.containsKey(studentid))
return studentList.get(studentid);
else
return new Student(0, "Nil", "Nil");
}
@GET
@Path("list")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<Student> getAllStudents() {
List<Student> students = new ArrayList<Student>();
students.addAll(studentList.values());
return students;
}
@POST
@Path("add")
@Produces("text/plain")
public String addStudent(@FormParam("name") String name,
@FormParam("dept") String dept) {
studentList.put(index, new Student(index++, name, dept));
return String.valueOf(index-1);
}
@DELETE
@Path("delete/{studentid}")
@Produces("text/plain")
public String removeStudent(@PathParam("studentid") int studentid) {
logger.info("Receieving quest for deleting student: " + studentid);
Student removed = studentList.remove(studentid);
if(removed==null) return "failed!";
else return "true";
}
@PUT
@Path("put")
@Produces("text/plain")
public String putStudent(@QueryParam("studentid") int studentid,
@QueryParam("name") String name,
@QueryParam("dept") String dept
) {
logger.info("Receieving quest for putting student: " + studentid);
if(!studentList.containsKey(studentid))
return "failed!";
else
studentList.put(studentid, new Student(studentid, name, dept));
return String.valueOf(studentid);
}
}
创建完之后项目结构如图:

4.再web.xml 配置如下:
<servlet>
<servlet-name>jerseyws</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
</init-param> <init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>cz.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>jerseyws</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
其中 com.sun.jersey.config.property.packages 的属性值是你资源所在的包的路径
5.maven install 略过
6.启动tomcat 访问路径 http://localhost:8081/rest/students/list 就看以看到如下结果:

7.其他资源获取方式自行领悟、测试
第一篇处女博文,觉得不好请将就下看这,如果该博文侵犯 原作者版权请尽快联系我
jersey + tomcat 实现restful风格的更多相关文章
- 在 Docker 上运行一个 RESTful 风格的微服务
tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...
- Jersey构建Restful风格的webservices
最近一直在搞老项目的开发工作,很少写博文了.听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看. 这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料. ...
- 基于jersey和Apache Tomcat构建Restful Web服务(二)
基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西 ...
- 基于jersey和Apache Tomcat构建Restful Web服务(一)
基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...
- 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
作者: Yi Ming Huang, 软件工程师, IBM Dong Fei Wu, 软件工程师, IBM Qing Guo, 软件工程师, IBM 出处: http://www.ibm.com/de ...
- Jersey构建Restful风格的Webserivces(三)
一.总体说明 通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增.删.改.查等操作. 服务端主要是通过内存的方式,来模拟用户的增加.删除.修改.查询 ...
- lucene构建restful风格的简单搜索引擎服务
来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客如今也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,文件夹结构: 二,配置文件: 总 ...
- SpringMVC实现Restful风格的WebService
1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...
- 基于MVC的RESTful风格的实现
基于MVC的RESTful风格的实现 1.RESTful风格阐述 REST服务是一种ROA(Resource-Oriented Architecture,面向资源的架构)应用.主要特点是方法信息存在于 ...
随机推荐
- windows server 2012服务器IIS基本配置
- 小记,取GB2312汉字的首字母【转】
/// <summary> /// PY 的摘要说明. /// </summary> public class PY { // Fields private string m_ ...
- WPF的模版
此例子来自<深入浅出WPF>,刘铁猛. VS2010 源码1:不使用Bingding 源码2:使用Binding 下面展示一些代码: 主窗体XAML代码: <Window x:Cla ...
- linux socket使用经验总结
1. scoket函数中PF_INET AF_INET区别 在UNIX系列中,PF_INET表示poxis, BSD系列用AF_INET 2. in_addr_t inet_addr(const ...
- 写个自动下载安装Ant的shell脚本【二】
#!/bin/bash ####################################################### file name: install_ant.sh# # fun ...
- Matlab norm 用法小记
Matlab norm 用法小记 matlab norm (a) 用法以及实例 norm(A,p)当A是向量时norm(A,p) Returns sum(abs(A).^p)^(1/p), for ...
- PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题(二)
转载:http://blog.csdn.net/dupang/article/details/8248335 按照网上的教程搭建Dreamweaver CS5.5+PhoneGap移动开发环境,在进行 ...
- Cow Marathon
poj1985:http://poj.org/problem?id=1985 题意:就是树的直径. 题解:直接DFS即可. #include<iostream> #include<c ...
- Android 中LocalBroadcastManager的使用方式
Android 中LocalBroadcastManager的使用方式 在android-support-v4.jar中引入了LocalBroadcastManager,称为局部通知管理器,这种通知的 ...
- Eclipse C/C++环境配置
一.C/C++环境配置: Window - Preferences - C/C++ 1. Editor - Content Assist - Auto-Activation - Delay(ms),原 ...