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,面向资源的架构)应用.主要特点是方法信息存在于 ...
随机推荐
- GPS定位学习笔记
********************************* GPS定位简介 ********************************** 1. iOS SDK提供两个框架来实现位置服务 ...
- JAVA面试题相关基础知识
1.面向对象的特征有哪些方面 ①抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节 ...
- 为什么这么多Python框架
原文:http://bitworking.org/news/Why_so_many_Python_web_frameworks BitWorking This is Joe Gregorio's wr ...
- wndows 7 Wifi热点
2016年09月13日 14時52分 wanglinqiang整理 Step1 cmd.exe(管理员身份运行) Step2 命令行输入[netsh wlan set hostednetwork mo ...
- 关于如何设置reduce的个数
在默认情况下,一个MapReduce Job如果不设置Reducer的个数,那么Reducer的个数为1.具体,可以通过JobConf.setNumReduceTasks(int numOfReduc ...
- 总结Web应用中基于浏览器的安全漏洞
1.浏览器缓存 每次打开一个网站,网页的内容会缓存到用户的机器中.如果这些内容在其他网页中需要重新加载,浏览器加载的是缓存,而不是再次下载内容.如果一些Web应用商店以及显示用户敏感信息(比 ...
- RedHat Enterprise Linux 6.4-x86_64 md5:467B53791903F9A0C477CBB1B24FFD1F
RedHat Enterprise Linux 6.4-x86_64 md5:467B53791903F9A0C477CBB1B24FFD1F 这是下载地址:http://pan.baidu.com/ ...
- WITH AS and materialize hints
WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...
- Maven学习(3) - Maven和Eclipse集成和构建多模块Maven项目
最近在工作中越来越经常的用到了Maven作为项目管理和Jar包管理和构建的工具,感觉Maven的确是很好用的.而且要将Maven的功能最大发挥出来,多模块是一个很好的集成例子. 一个Maven项目包括 ...
- (转载)shell中用date命令获取昨天、明天或者多天前的日期
(转载)http://blog.sina.com.cn/s/blog_3e4774e30100p0yv.html 使用date命令获取日期很方便,最近需要获取当前日期的下一天日期在linux应该如何获 ...