本文演示环境为eclipse + Maven插件 + Jersey framework。本文只关注Jersey的使用,所以只使用类中定义的静态数据做演示。请在使用时修改我的代码。如果你的eclipse中没有安装Maven插件,请关注我的博客,我马上就会推出Maven+eclipse的开发教程。

1. 在eclipse中创建Maven项目

2.单击"Next"

3. 选择Maven项目类型为"maven-archetype-webapp"

4. 输入项目相关的Maven设置

5. 分别创建src/main下java文件夹以及src下test文件夹

6. 设置src/main/java和src/test/java为source folder

7. 最终设置结果如下:

8. 修改pom.xml,添加Maven相应依赖库

4.0.0net.jianxi.tutorials.jerseywsjerseywstestwar1.0jerseywstest Maven Webapphttp://maven.apache.orgjunitjunit4.7testcom.sun.jerseyjersey-core1.3com.sun.jerseyjersey-server1.3com.sun.jerseyjersey-client1.3log4jlog4j1.2.14javax.ws.rsjsr311-api1.1.1asmasm3.2jerseywstestmaven-compiler-plugin1.61.6org.codehaus.mojotomcat-maven-plugintarget/jerseywstest.war

9. 添加基本POJO类Student:

1 packagenet.jianxi.tutorials.jerseyws.metadata;2 3 importjavax.xml.bind.annotation.XmlRootElement;4 5 @XmlRootElement6 publicclassStudent {7 privateintid;8 privateString name;9 privateString dept;10 11 publicintgetId() {12 returnid;13 }14 15 publicStudent() {16 }17 18 publicStudent(intid, String name, String dept) {19 super();20 this.id=id;21 this.name=name;22 this.dept=dept;23 }24 publicvoidsetId(intid) {25 this.id=id;26 }27 publicString getName() {28 returnname;29 }30 publicvoidsetName(String name) {31 this.name=name;32 }33 publicString getDept() {34 returndept;35 }36 publicvoidsetDept(String dept) {37 this.dept=dept;38 }39 40 }41

10. 添加一个REST web服务实现类RestWsDemo:

1 packagenet.jianxi.tutorials.jerseyws;2 3 importjava.util.ArrayList;4 importjava.util.HashMap;5 importjava.util.List;6 importjava.util.Map;7 8 importjavax.ws.rs.DELETE;9 importjavax.ws.rs.FormParam;10 importjavax.ws.rs.GET;11 importjavax.ws.rs.POST;12 importjavax.ws.rs.PUT;13 importjavax.ws.rs.Path;14 importjavax.ws.rs.PathParam;15 importjavax.ws.rs.Produces;16 importjavax.ws.rs.QueryParam;17 importjavax.ws.rs.core.MediaType;18 19 importnet.jianxi.tutorials.jerseyws.metadata.Student;20 21 importorg.apache.log4j.Logger;22 23 24 @Path("/students")25 publicclassRestWsDemo {26 privatestaticLogger logger=Logger.getLogger(RestWsDemo.class);27 privatestaticintindex=1;28 privatestaticMapstudentList=newHashMap();29 30 publicRestWsDemo() {31 if(studentList.size()==0) {32 studentList.put(index,newStudent(index++,"Frank","CS"));33 studentList.put(index,newStudent(index++,"Jersey","Math"));34 }35 }36 37 @GET38 @Path("{studentid}")39 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})40 publicStudent getMetadata(@PathParam("studentid")intstudentid) {41 if(studentList.containsKey(studentid))42 returnstudentList.get(studentid);43 else44 returnnewStudent(0,"Nil","Nil");45 }46 47 @GET48 @Path("list")49 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})50 publicListgetAllStudents() {51 Liststudents=newArrayList();52 students.addAll(studentList.values());53 returnstudents;54 }55 56 @POST57 @Path("add")58 @Produces("text/plain")59 publicString addStudent(@FormParam("name") String name,60 @FormParam("dept") String dept) {61 studentList.put(index,newStudent(index++, name, dept));62 returnString.valueOf(index-1);63 }64 65 @DELETE66 @Path("delete/{studentid}")67 @Produces("text/plain")68 publicString removeStudent(@PathParam("studentid")intstudentid) {69 logger.info("Receieving quest for deleting student:"+studentid);70 71 Student removed=studentList.remove(studentid);72 if(removed==null)return"failed!";73 elsereturn"true";74 }75 76 @PUT77 @Path("put")78 @Produces("text/plain")79 publicString putStudent(@QueryParam("studentid")intstudentid,80 @QueryParam("name") String name,81 @QueryParam("dept") String dept82 ) {83 logger.info("Receieving quest for putting student:"+studentid);84 if(!studentList.containsKey(studentid))85 return"failed!";86 else87 studentList.put(studentid,newStudent(studentid, name, dept));88 89 returnString.valueOf(studentid);90 }91 }92

11. 修改src/main/webapp/WEB-INF/web.xml文件如下:

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">Archetype Created Web Applicationjerseywscom.sun.jersey.spi.container.servlet.ServletContainercom.sun.jersey.config.property.resourceConfigClasscom.sun.jersey.api.core.PackagesResourceConfigcom.sun.jersey.config.property.packagesnet.jianxi.tutorials.jerseyws1jerseyws/rest/*

12. 运行Maven package任务,构建war文件,部署war应用到你的Web服务器。

13. 测试

我马上就会推出如何用SoapUI工具测试Jersey Web服务的教程。这里这介绍简单的测试方法。

13.1) 对于GET,可以直接通过浏览器进行测试,在浏览器中直接输入:http://localhost:8080/jerseywstest/rest/students/list, 你应该看到返回的XML数据:

CS1FrankMath2Jersey

输入:http://localhost:8080/jerseywstest/rest/students/1则会返回一个学生的信息。

13.2) 测试POST方法。

添加一个testpost.htm文件

Insert title here

提交后你在用list方法就可以看到数据的变化。

13.3) PUT和DELETE方法的测试

添加一个Junit测试类

1 packagenet.jianxi.tutorials.jerseyws;2 3 4 importjavax.ws.rs.core.MultivaluedMap;5 6 importorg.junit.Before;7 importorg.junit.BeforeClass;8 importorg.junit.Test;9 10 importcom.sun.jersey.api.client.Client;11 importcom.sun.jersey.api.client.ClientResponse;12 importcom.sun.jersey.api.client.WebResource;13 importcom.sun.jersey.core.util.MultivaluedMapImpl;14 15 publicclassRestWsDemoTest {16 privateString url="http://localhost:8080/jerseywstest/rest/students";17 18 @Test19 publicvoidtestDelete() {20 Client client=Client.create();21 WebResource webResource=client.resource(url+"/delete/1");22 ClientResponse response=webResource.delete(ClientResponse.class);23 24 System.out.println("Response for delete request:"+response.getStatus());25 }26 27 @Test28 publicvoidtestPut() {29 Client client=Client.create();30 WebResource webResource=client.resource(url+"/put");31 MultivaluedMap queryParams=newMultivaluedMapImpl();32 queryParams.add("studentid","2");33 queryParams.add("name","nametest");34 queryParams.add("dept","depttest");35 ClientResponse response=webResource.queryParams(queryParams).put(ClientResponse.class,"foo:test");36 System.out.println("Response for put request:"+response.getStatus());37 }38 }39

maven jersey mysql_使用Maven和Jersey Framework开发REST风格Web Service相关推荐

  1. jersey 入门示例_Jersey Web Service Hello World Java示例

    jersey 入门示例 在Restlet之后, Jersey是另一个流行的开源框架,可以用Java创建RESTful Web服务 . Jersey符合JAX-RS规范,实际上它是JAX-RS(JSR ...

  2. Jersey——30分钟速读《Java RESTful Web Service 实战》

    一.Jersey入门 1.1 REST简述 REST(Representational State Transfer,表述性状态转移),源于REST之父Roy Thomas Fielding博士在20 ...

  3. Maven学习总结(二)——Maven项目构建过程练习

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验 ...

  4. 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例

     1 若想让maven项目依赖另外一个maven项目,被依赖的项目要在maven仓库中有相应的jar包,所以要对依赖的项目执行mvninstall命令. 2 新建第二个项目模块HelloFrien ...

  5. 使用apache CXF和maven开发Web Service

    来源:http://www.cnblogs.com/holbrook/archive/2012/12/12/2814821.html 目前主要的java webservice框架剩下了axis2和cx ...

  6. 使用Maven,Jetty和Tomcat在嵌入式容器中运行Java Web应用程序

    在开发Java Web应用程序时,从"真实"环境中获得快速反馈非常实用. 在本文中,我将探讨如何在嵌入式容器Jetty或Tomcat中运行带有Maven的Java Web应用程序. ...

  7. maven安装junit_JUnit安装Maven – JUnit 4和JUnit 5

    maven安装junit JUnit 4 and JUnit 5 are completely different frameworks. They both serve the same purpo ...

  8. Maven入门指南⑦:Maven的生命周期和插件

    Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...

  9. Maven学习总结(四)——Maven核心概念

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(四)--Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平 ...

最新文章

  1. Android怎么设置主活动,如何从另一个活动启动Android AppWidget的配置活动?
  2. select,poll,epoll区别面试常问
  3. vivado2017.4启动时提示的“error when launching'E:\vivado':Launcher time out”的问题
  4. windows10下Anaconda spyder安装CRF++的python接口
  5. Android中Service的启动方式及Activity与Service的通信方式
  6. Tomcat优化之配置线程池
  7. 不同类型社交应用发展分析
  8. Hive的使用之hwi
  9. printdocument python_python学习笔记之wxpython打印预览
  10. mysql 策略_MySQL 密码策略
  11. 图例放在图的外面_手把手教你绘制多个置信区间的森林图
  12. 服务器.htaccess 详解,最新最全的 .htaccess 参数说明
  13. Maya布料解算入门
  14. 十万个为什么哪个版本适合小学生阅读
  15. luogu1330 封锁阳光大学
  16. 怎样制作传奇私服服务器,新手传奇gm必须学会如何制作传奇私服小地图
  17. 排序算法(三)—— 插入法排序算法
  18. Zabbix主页应用介绍
  19. 微信群总有人发广告?用Python写一个自动化机器人消灭他
  20. python爬虫豆瓣电影评价_Python 爬虫实战(1):分析豆瓣中最新电影的影评

热门文章

  1. ubuntu中pycharm无法输入汉字
  2. DX使用随笔--NavBarControl
  3. db2和oracle更新xml大字段
  4. Node.js API方法
  5. Ms sql pivot unpivot
  6. window对象与document对象的区别
  7. 计算机数制和运算的一点总结.
  8. asp.net中后台javaScrip的使用
  9. arraylist/vector add()方法诡异之---多次add进去的对象最终都变成最后一次add进去的对象值...
  10. 梯度的负方向是损失函数下降最快的方向