本文参考 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 文件加入项目所需包:

  1. <dependency>
  2. <groupId>junit</groupId>
  3. <artifactId>junit</artifactId>
  4. <version>4.7</version>
  5. <scope>test</scope>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.sun.jersey</groupId>
  9. <artifactId>jersey-core</artifactId>
  10. <version>1.3</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>com.sun.jersey</groupId>
  14. <artifactId>jersey-server</artifactId>
  15. <version>1.3</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.sun.jersey</groupId>
  19. <artifactId>jersey-client</artifactId>
  20. <version>1.3</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>log4j</groupId>
  24. <artifactId>log4j</artifactId>
  25. <version>1.2.14</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>javax.ws.rs</groupId>
  29. <artifactId>jsr311-api</artifactId>
  30. <version>1.1.1</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>asm</groupId>
  34. <artifactId>asm</artifactId>
  35. <version>3.2</version>
  36. </dependency>

3.创建pojo类 Student:

  1. @XmlRootElement
  2. public class Student {
  3. private int id;
  4. private String name;
  5. private String dept;
  6.  
  7. public int getId() {
  8. return id;
  9. }
  10.  
  11. public Student() {
  12. }
  13.  
  14. public Student(int id, String name, String dept) {
  15. super();
  16. this.id = id;
  17. this.name = name;
  18. this.dept = dept;
  19. }
  20. public void setId(int id) {
  21. this.id = id;
  22. }
  23. public String getName() {
  24. return name;
  25. }
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. public String getDept() {
  30. return dept;
  31. }
  32. public void setDept(String dept) {
  33. this.dept = dept;
  34. }
  35.  
  36. }

同时创建资源类:

  1. @Path("/students")
  2. public class RestWsDemo {
  3. private static Logger logger = Logger.getLogger(RestWsDemo.class);
  4. private static int index = 1;
  5. private static Map<Integer,Student> studentList = new HashMap<Integer, Student>();
  6.  
  7. public RestWsDemo() {
  8. if(studentList.size()==0) {
  9. studentList.put(index, new Student(index++, "Frank", "CS"));
  10. studentList.put(index, new Student(index++, "Jersey", "Math"));
  11. }
  12. }
  13.  
  14. @GET
  15. @Path("{studentid}")
  16. @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
  17. public Student getMetadata(@PathParam("studentid") int studentid) {
  18. if(studentList.containsKey(studentid))
  19. return studentList.get(studentid);
  20. else
  21. return new Student(0, "Nil", "Nil");
  22. }
  23.  
  24. @GET
  25. @Path("list")
  26. @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
  27. public List<Student> getAllStudents() {
  28. List<Student> students = new ArrayList<Student>();
  29. students.addAll(studentList.values());
  30. return students;
  31. }
  32.  
  33. @POST
  34. @Path("add")
  35. @Produces("text/plain")
  36. public String addStudent(@FormParam("name") String name,
  37. @FormParam("dept") String dept) {
  38. studentList.put(index, new Student(index++, name, dept));
  39. return String.valueOf(index-1);
  40. }
  41.  
  42. @DELETE
  43. @Path("delete/{studentid}")
  44. @Produces("text/plain")
  45. public String removeStudent(@PathParam("studentid") int studentid) {
  46. logger.info("Receieving quest for deleting student: " + studentid);
  47.  
  48. Student removed = studentList.remove(studentid);
  49. if(removed==null) return "failed!";
  50. else return "true";
  51. }
  52.  
  53. @PUT
  54. @Path("put")
  55. @Produces("text/plain")
  56. public String putStudent(@QueryParam("studentid") int studentid,
  57. @QueryParam("name") String name,
  58. @QueryParam("dept") String dept
  59. ) {
  60. logger.info("Receieving quest for putting student: " + studentid);
  61. if(!studentList.containsKey(studentid))
  62. return "failed!";
  63. else
  64. studentList.put(studentid, new Student(studentid, name, dept));
  65.  
  66. return String.valueOf(studentid);
  67. }
  68. }

创建完之后项目结构如图:

4.再web.xml 配置如下:

  1. <servlet>
  2. <servlet-name>jerseyws</servlet-name>
  3. <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
  4.  
  5. <init-param>
  6. <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
  7. <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
  8. </init-param>
  9.  
  10. <init-param>
  11. <param-name>com.sun.jersey.config.property.packages</param-name>
  12. <param-value>cz.service</param-value>
  13. </init-param>
  14. <load-on-startup>1</load-on-startup>
  15. </servlet>
  16.  
  17. <servlet-mapping>
  18. <servlet-name>jerseyws</servlet-name>
  19. <url-pattern>/rest/*</url-pattern>
  20. </servlet-mapping>

其中 com.sun.jersey.config.property.packages 的属性值是你资源所在的包的路径

5.maven install 略过

6.启动tomcat 访问路径 http://localhost:8081/rest/students/list 就看以看到如下结果:

7.其他资源获取方式自行领悟、测试

第一篇处女博文,觉得不好请将就下看这,如果该博文侵犯 原作者版权请尽快联系我

jersey + tomcat 实现restful风格的更多相关文章

  1. 在 Docker 上运行一个 RESTful 风格的微服务

    tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...

  2. Jersey构建Restful风格的webservices

    最近一直在搞老项目的开发工作,很少写博文了.听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看. 这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料. ...

  3. 基于jersey和Apache Tomcat构建Restful Web服务(二)

    基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西 ...

  4. 基于jersey和Apache Tomcat构建Restful Web服务(一)

    基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...

  5. 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

    作者: Yi Ming Huang, 软件工程师, IBM Dong Fei Wu, 软件工程师, IBM Qing Guo, 软件工程师, IBM 出处: http://www.ibm.com/de ...

  6. Jersey构建Restful风格的Webserivces(三)

    一.总体说明 通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增.删.改.查等操作. 服务端主要是通过内存的方式,来模拟用户的增加.删除.修改.查询 ...

  7. lucene构建restful风格的简单搜索引擎服务

    来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客如今也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,文件夹结构: 二,配置文件: 总 ...

  8. SpringMVC实现Restful风格的WebService

    1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...

  9. 基于MVC的RESTful风格的实现

    基于MVC的RESTful风格的实现 1.RESTful风格阐述 REST服务是一种ROA(Resource-Oriented Architecture,面向资源的架构)应用.主要特点是方法信息存在于 ...

随机推荐

  1. GPS定位学习笔记

    ********************************* GPS定位简介 ********************************** 1. iOS SDK提供两个框架来实现位置服务 ...

  2. JAVA面试题相关基础知识

        1.面向对象的特征有哪些方面 ①抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节 ...

  3. 为什么这么多Python框架

    原文:http://bitworking.org/news/Why_so_many_Python_web_frameworks BitWorking This is Joe Gregorio's wr ...

  4. wndows 7 Wifi热点

    2016年09月13日 14時52分 wanglinqiang整理 Step1 cmd.exe(管理员身份运行) Step2 命令行输入[netsh wlan set hostednetwork mo ...

  5. 关于如何设置reduce的个数

    在默认情况下,一个MapReduce Job如果不设置Reducer的个数,那么Reducer的个数为1.具体,可以通过JobConf.setNumReduceTasks(int numOfReduc ...

  6. 总结Web应用中基于浏览器的安全漏洞

    ‍‍‍‍‍1.浏览器缓存 每次打开一个网站,网页的内容会缓存到用户的机器中.如果这些内容在其他网页中需要重新加载,浏览器加载的是缓存,而不是再次下载内容.如果一些Web应用商店以及显示用户敏感信息(比 ...

  7. RedHat Enterprise Linux 6.4-x86_64 md5:467B53791903F9A0C477CBB1B24FFD1F

    RedHat Enterprise Linux 6.4-x86_64 md5:467B53791903F9A0C477CBB1B24FFD1F 这是下载地址:http://pan.baidu.com/ ...

  8. WITH AS and materialize hints

    WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...

  9. Maven学习(3) - Maven和Eclipse集成和构建多模块Maven项目

    最近在工作中越来越经常的用到了Maven作为项目管理和Jar包管理和构建的工具,感觉Maven的确是很好用的.而且要将Maven的功能最大发挥出来,多模块是一个很好的集成例子. 一个Maven项目包括 ...

  10. (转载)shell中用date命令获取昨天、明天或者多天前的日期

    (转载)http://blog.sina.com.cn/s/blog_3e4774e30100p0yv.html 使用date命令获取日期很方便,最近需要获取当前日期的下一天日期在linux应该如何获 ...