- 浏览: 305689 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (185)
- C# (8)
- Java (21)
- Oracle (25)
- mysql (3)
- SQLite (9)
- PHP (0)
- 虚拟机 (6)
- Tomcat (5)
- WebService (9)
- Linux (4)
- Windows (0)
- 域名和空间 (5)
- 测试 (1)
- Javascript (2)
- cache (1)
- 认证 (1)
- 图形报表 (1)
- Eclipse&plugins (1)
- struts2 (2)
- Swing (2)
- maven (1)
- BAT (3)
- JqueryUI (1)
- WEB (1)
- Jquery (1)
- 软件 (1)
- Google (1)
- sitemesh (1)
- Spring (1)
- 字体 (1)
- log4j (1)
- 日志级别 (1)
- 控制中心 (1)
- Log4jManager (1)
- log4j.jsp (1)
最新评论
-
chao_t:
不可以喃,楼主
实时控制log4j日志输出级别-Log4J日志级别控制中心 -
zercle:
感谢分享,还在下载中,一直都用plsql,昨天听别人说toad ...
Toad for Oracle 11绿色版本,加上plsql developerv9.0.1.1613 -
cmland:
赞一个,可以使用
Toad for Oracle 11绿色版本,加上plsql developerv9.0.1.1613 -
mozheshashou:
大哥 关键是那个服务器端怎么写啊 ,求指教啊,
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 -
bjxyj:
net.sourceforge.jdbclogger.Jdbc ...
p6spy的替代品:jdbc logger
本文演示环境为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相应依赖库
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.jianxi.tutorials.jerseyws</groupId> <artifactId>jerseywstest</artifactId> <packaging>war</packaging> <version>1.0</version> <name>jerseywstest Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <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> </dependencies> <build> <finalName>jerseywstest</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <configuration> <warFile>target/jerseywstest.war</warFile> </configuration> </plugin> </plugins> </build> </project>
9. 添加基本POJO类Student:
1 package net.jianxi.tutorials.jerseyws.metadata; 2 3 import javax.xml.bind.annotation.XmlRootElement; 4 5 @XmlRootElement 6 public class Student { 7 private int id; 8 private String name; 9 private String dept; 10 11 public int getId() { 12 return id; 13 } 14 15 public Student() { 16 } 17 18 public Student(int id, String name, String dept) { 19 super(); 20 this.id = id; 21 this.name = name; 22 this.dept = dept; 23 } 24 public void setId(int id) { 25 this.id = id; 26 } 27 public String getName() { 28 return name; 29 } 30 public void setName(String name) { 31 this.name = name; 32 } 33 public String getDept() { 34 return dept; 35 } 36 public void setDept(String dept) { 37 this.dept = dept; 38 } 39 40 } 41
10. 添加一个REST web服务实现类RestWsDemo:
1 package net.jianxi.tutorials.jerseyws; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 import javax.ws.rs.DELETE; 9 import javax.ws.rs.FormParam; 10 import javax.ws.rs.GET; 11 import javax.ws.rs.POST; 12 import javax.ws.rs.PUT; 13 import javax.ws.rs.Path; 14 import javax.ws.rs.PathParam; 15 import javax.ws.rs.Produces; 16 import javax.ws.rs.QueryParam; 17 import javax.ws.rs.core.MediaType; 18 19 import net.jianxi.tutorials.jerseyws.metadata.Student; 20 21 import org.apache.log4j.Logger; 22 23 24 @Path("/students") 25 public class RestWsDemo { 26 private static Logger logger = Logger.getLogger(RestWsDemo.class); 27 private static int index = 1; 28 private static Map<Integer,Student> studentList = new HashMap<Integer, Student>(); 29 30 public RestWsDemo() { 31 if(studentList.size()==0) { 32 studentList.put(index, new Student(index++, "Frank", "CS")); 33 studentList.put(index, new Student(index++, "Jersey", "Math")); 34 } 35 } 36 37 @GET 38 @Path("{studentid}") 39 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 40 public Student getMetadata(@PathParam("studentid") int studentid) { 41 if(studentList.containsKey(studentid)) 42 return studentList.get(studentid); 43 else 44 return new Student(0, "Nil", "Nil"); 45 } 46 47 @GET 48 @Path("list") 49 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 50 public List<Student> getAllStudents() { 51 List<Student> students = new ArrayList<Student>(); 52 students.addAll(studentList.values()); 53 return students; 54 } 55 56 @POST 57 @Path("add") 58 @Produces("text/plain") 59 public String addStudent(@FormParam("name") String name, 60 @FormParam("dept") String dept) { 61 studentList.put(index, new Student(index++, name, dept)); 62 return String.valueOf(index-1); 63 } 64 65 @DELETE 66 @Path("delete/{studentid}") 67 @Produces("text/plain") 68 public String removeStudent(@PathParam("studentid") int studentid) { 69 logger.info("Receieving quest for deleting student: " + studentid); 70 71 Student removed = studentList.remove(studentid); 72 if(removed==null) return "failed!"; 73 else return "true"; 74 } 75 76 @PUT 77 @Path("put") 78 @Produces("text/plain") 79 public String putStudent(@QueryParam("studentid") int studentid, 80 @QueryParam("name") String name, 81 @QueryParam("dept") String dept 82 ) { 83 logger.info("Receieving quest for putting student: " + studentid); 84 if(!studentList.containsKey(studentid)) 85 return "failed!"; 86 else 87 studentList.put(studentid, new Student(studentid, name, dept)); 88 89 return String.valueOf(studentid); 90 } 91 } 92
11. 修改src/main/webapp/WEB-INF/web.xml文件如下:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <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>net.jianxi.tutorials.jerseyws</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> </web-app>
12. 运行Maven package任务,构建war文件,部署war应用到你的Web服务器。
13. 测试
我马上就会推出如何用SoapUI工具测试Jersey Web服务的教程。这里这介绍简单的测试方法。
13.1) 对于GET,可以直接通过浏览器进行测试,在浏览器中直接输入:http://localhost:8080/jerseywstest/rest/students/list, 你应该看到返回的XML数据:
输入:http://localhost:8080/jerseywstest/rest/students/1则会返回一个学生的信息。<students> <student> <dept>CS</dept> <id>1</id> <name>Frank</name> </student> <student> <dept>Math</dept> <id>2</id> <name>Jersey</name> </student> </students>
13.2) 测试POST方法。
添加一个testpost.htm文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="/jerseywstest/rest/students/add" method="post"> <input type="text" id="name" name="name"/><br/> <input type="text" id="dept" name="dept"/><br/> <input type= "submit"/> </form> </body> </html>
提交后你在用list方法就可以看到数据的变化。
13.3) PUT和DELETE方法的测试
添加一个Junit测试类
1 package net.jianxi.tutorials.jerseyws; 2 3 4 import javax.ws.rs.core.MultivaluedMap; 5 6 import org.junit.Before; 7 import org.junit.BeforeClass; 8 import org.junit.Test; 9 10 import com.sun.jersey.api.client.Client; 11 import com.sun.jersey.api.client.ClientResponse; 12 import com.sun.jersey.api.client.WebResource; 13 import com.sun.jersey.core.util.MultivaluedMapImpl; 14 15 public class RestWsDemoTest { 16 private String url = "http://localhost:8080/jerseywstest/rest/students"; 17 18 @Test 19 public void testDelete() { 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 @Test 28 public void testPut() { 29 Client client = Client.create(); 30 WebResource webResource = client.resource(url + "/put"); 31 MultivaluedMap queryParams = new MultivaluedMapImpl(); 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
发表评论
-
Java 实现快递查询 (免费) ,不用输入验证码
2013-05-25 21:54 1576查快递的时候发现了一个http://www.kaidi10 ... -
实时控制log4j日志输出级别-Log4J日志级别控制中心
2013-01-27 01:45 2317动态控制Log4J日志级别,只需要一个JSP页面 ... -
动态加载配置文件类,通用类
2012-07-21 12:13 2169package config; import java. ... -
Java 修复HTML标签
2012-07-03 14:15 1711开源的组件:http://sourceforge.net/pr ... -
正则表达式中的java 转义字符
2012-05-08 22:19 1629java 的转义字符,在正则表达式中应用 ... -
java解析SQL脚本
2012-05-08 22:17 1516/** * 执行初始化SQL脚本 * @param ... -
Protocol Buffer入门——轻松搭建java环境
2012-04-19 21:49 1204Protocol Buffer入门—— ... -
RMI、Hessian、Burlap、Httpinvoker、WebService的比較
2012-04-09 19:56 2849RMI、Hessian、Burlap、Httpin ... -
一个开源的Java快速开发平台
2012-04-10 09:24 1944http://www.j-hi.net/ J-HI是一 ... -
apache common DurationFormatUtils
2012-04-01 10:42 1142日期相減(兩日期相差多少天,月,年): Date d1 ... -
使用Perf4J进行性能分析和监控
2012-04-01 10:20 963使用Perf4J进行性能分析和监控 作者 ... -
jsoup 是一款 Java 的HTML 解析器
2012-03-21 23:31 1083jsoup 是一款 Java 的HTML 解析器,可 ... -
struts2-redirect和redirect-action的一点区别
2012-03-15 14:23 727struts2-redirect和redirect-actio ... -
t150ckh request.getHeader("user-agent")解析浏览器
2012-03-07 20:18 19926public class BrowseTool { ... -
收邮件、更改邮件标志 javamai +imap
2011-05-09 12:17 1515来源:http://blog.csdn.net/su ... -
UrlRewriteFilter 学习笔记
2011-01-18 16:18 16921、简介 UrlRewriteFilter是 ... -
java.lang.SecurityException: Prohibited package name
2011-01-02 15:39 3026问题 java.lang.SecurityExceptio ... -
Java 线程Join的用法
2010-11-18 10:11 984在上面的例子中多次使用到了Thread类的join方法。我想大 ... -
Java 守护线程与非守护线程的区别
2010-11-18 10:05 2418ublic static void main ... -
关于JAVA中enum枚举类型的思考
2010-10-31 09:58 1323package utils; /** * @ ...
相关推荐
This book provides a comprehensive introduction to Jersey framework (an implementation of JAX-RS specification) as the application development framework for RESTFul web service development. This book ...
这个项目是一个小型的JAX-RS样板,结合了Spring Framework,Hibernate和Jersey来构建Restful Web服务。 应用程序服务器是Jetty,数据库服务器是MySQL。 通过应用MVC和DAO模型,可以轻松扩展和维护该项目。
technology stack together with any of the frameworks Jersey's JAX-RS, Restlet's Lightweight REST, JBoss's JAX-RS RESTEasy, and Struts 2 with the REST plugin. You don't need to know REST, as we cover ...
展现层: Spring MVC - MVC Framework Java Server Pages (JSP) - View Generation ExtJS - Javascript UI Widget Framework Spring Security - Security Framework Jackson - JSON Generation / Parser Jersey - ...
mochasoft-framework 摩卡软件的 java 开发框架 ...Restful Service: JAX-RS 1.0 + Jersey/CXF,够标准,但直接使用Spring MVC能使架构更简单 **展现层:**JSP2.0且尽量使用JSP EL而不是taglib,万一要写taglib也用
此外,我还将演示如何使用Postman工具测试RESTful应用程序。目录0先决条件和演示应用要使用该项目,您将需要; Java JDK 8(1.8) Maven与JDK 8兼容任何Java IDE (可选,将用于测试Web服务) 我们
RESTful实现框架这是一个Java的jersey实现的Restful API的基本框架,实现了基本的GET和POST示例接口,还有文件传输的接口(图片文件上传)框架中集成了Spring,Mybatis的基本使用方法,主要采用Spring注解的方法,...
Jersey RESTful Web 服务框架是一个开源的、生产质量的框架,用于在 Java 中开发 RESTful Web 服务,为 JAX-RS API 提供支持。 Spring Framework 是 Java 平台的开源应用程序框架和控制反转容器。 RESTful API ...
该库包含用于通过清单数据增强RESTFul服务的通用代码。 如果要在服务中使用Manifestor,则Maven依赖关系如下所示: < groupId>com.eharmony</ groupId> < artifactId>manifestor < version>1.0.0-SNAPSHOT ...
RESTful behavior. The Atmosphere Framework is portable and can be deployed on any Web Server that supports the Servlet Specification 2.3. This document introduces ...
使用jersey-test-framework实现的集成测试,vmlens还使用并发junit处理并发请求 mvn clean test 运行应用程序 生成应用程序,然后运行 java -jar transfer-1.0-SNAPSHOT.jar API方法说明 用户数 创建用户 POST ...
Dropwizard是制作快速Java Web应用程序的一种偷偷摸摸的方法。 这是一些自以为是的胶水代码,将一组历史上从未使用过的库组合在一起: HTTP服务的。 REST模型的。 的JSON parsin和 ”。 验证的。 可以确定...
JAX-RS是在Java中构建RESTful服务的好方法。 这是一个非常快速和简单的REST服务示例,可让您上载文件并随后下载。 生成并运行 使用以下代码构建代码: $ mvn package POM文件使用生成包装器脚本,因此运行该应用...
描述 ... 注册后,您可以使用zk-srv-discovery或org.apache.curator.x.discovery.ServiceDiscovery实例检查有关服务的运行状况。 要求: 动物园管理员3.5.x ZooKeeper 3.4.x-需要从策展人的依赖项中排除: ...