- 浏览: 467666 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
没有147 段
严格的手机号码正则表达式写法 --java -
飞天奔月:
182段没有 public static final ...
严格的手机号码正则表达式写法 --java -
zcc2010ry:
多谢分享,问题果断解决
Web app root system property already set to different value: 'webapp.root' -
hety163:
删除当前工作目录下的WORKSPACE/.metadata/. ...
“Initializing Java Tools 1%”问题的终极解决办法 -
qq12241713:
[b] :arrow: [i][/i][/b]
Flex和spring集成时需要的SpringFactory
本文演示环境为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相应依赖库
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><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:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 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:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 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文件如下:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><!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则会返回一个学生的信息。<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><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文件
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><!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测试类
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 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、PHP、C#、Object-C 通用的DES加密解密
2016-01-22 13:46 2145JAVA、Android: package com.ex ... -
IntelliJ IDEA 注册码
2016-01-13 18:26 2814注册时选择“License server”输入“http:// ... -
myEclipse8.5安装svn插件
2014-05-04 16:36 806在网上查了一下,安装的方法有几种,这里给大家推荐一种快速 ... -
System.getProperty()方法大全
2014-04-23 10:58 654System.out.prin ... -
Tomcat中404/500 错误,自定义错误页面
2014-03-23 00:04 40525Tomcat中404/500 错误,自定义错误页面 ... -
jdbc.SQLServerException: 必须声明标量变量 "@P0where"异常原因及其解决办法
2014-01-29 16:34 3597异常描述: 一个删除语句的功能按钮用Servlet+J ... -
Tomcat性能优化
2014-01-09 09:51 8237Tomcat6.18版本:apache-tomcat-6. ... -
版本错异常:java.lang.UnsupportedClassVersionError: Bad version number in .class file
2013-12-23 11:54 844今天在创建了一个工程,编译并部署到tomcat后,发现出现 ... -
Exception loading sessions from persistent storage
2013-12-20 17:06 766严重: Exception loading sessions ... -
Apache+Tomcat集群配置
2013-12-11 22:56 2633本文Apache+Tomcat集群配置 基于最新的Apa ... -
严格的手机号码正则表达式写法 --java
2013-12-06 16:51 32905更严格的手机号码正则表达式写法 --java 移动:13 ... -
Web app root system property already set to different value: 'webapp.root'
2013-12-06 16:42 11393Tomcat发布多个项目时抛的webAppRootKey ... -
Servlet class X is not a javax.servlet.Servlet解决方案
2013-12-04 14:29 10037写servlet的时候,报500错:Servlet cla ... -
common-configuration读取xml,properties文件
2013-11-22 17:58 1297我们在实际的开发设计中,通常要读各种各样的配置文件,十分 ... -
Apache Common Configuration 初步使用
2013-11-22 17:05 958今天玩了一把Apache common configura ... -
“Initializing Java Tools 1%”问题的终极解决办法
2013-10-10 10:24 11533相信很多使用eclipse的朋友都有受到过“Initial ... -
java统计出字符串中的英文字母,空格,数字和其他字符的个数
2013-09-04 17:22 40474分别统计字符串的数字、字母、空格和其他字符(包括汉字、标点 ... -
java取小数点后两位的4种方法
2013-09-04 13:01 3344方法一 Long是长整型,怎么有小数,是double吧 ... -
java实现页面访问量统计的实例
2013-09-03 17:05 15420有时候,我们可能需要统计Web站点上的一个特定页面的访问次数 ... -
Java中去除字符串中的所有空格
2013-08-05 10:44 5642JAVA中去掉空格 1. String.trim( ...
相关推荐
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URL来定位资源,使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源。RESTful服务通常用于构建可扩展、易于...
REST(Representational State Transfer)是一种软件架构风格,用于构建Web服务,强调简洁、可扩展性和无状态性。Jersey是Java领域中实现RESTful API的重要工具,它提供了全面的API来创建、部署和消费RESTful Web...
Jersey提供了一些工具和插件,如Jersey Test Framework用于单元测试REST服务,Jersey Client API用于客户端调用,以及支持集成其他框架,如Spring和CDI。 ### 6. 示例应用 创建一个简单的Jersey应用,包括资源类、...
通过这种方式,Spring4和Jersey2.9的集成使得我们可以充分利用Spring的强大功能,同时享受Jersey提供的高效REST服务开发体验。这种组合为构建可扩展、健壮且易于维护的Web服务提供了坚实的基础。
REST是一种网络应用程序的设计风格和开发方式,它基于HTTP协议,强调资源的表述和状态转换。Java中的REST风格Web服务通常通过JAX-RS来实现,而Jersey是JAX-RS的实现库。它允许开发者用Java注解来定义HTTP方法(如GET...
标题中的"jersey 1.17+spring 3.1.0.RELEASE+hibernate 3.3.1.GA maven 配置文"揭示了一个集成开发环境的配置,涉及到三个关键的Java技术栈组件:Jersey、Spring和Hibernate。下面将详细介绍这三个组件以及如何在...
REST(Representational State Transfer)是一种架构风格,用于设计网络应用程序,强调简洁、无状态和基于标准的交互方式。Java作为广泛应用的编程语言,提供了多种框架来支持RESTful API的开发。本资源主要介绍如何...
Jersey 是一个开源的 RESTful Web 服务客户端和服务器实现,它基于 Java 框架,主要用于构建符合 JAX-RS(Java API for RESTful Web Services)标准的应用程序。JAX-RS 是 Java 平台上的一个规范,用于简化创建和...
Java RESTful Web服务是基于HTTP协议的轻量级服务接口,它使用了REST(Representational State Transfer,表现层状态转移)架构风格。RESTful服务强调资源的管理和操作,通过URI(Uniform Resource Identifier)来...
而Jersey是JAX-RS(Java API for RESTful Web Services)规范的实现,用于创建和消费RESTful服务。 1. **环境准备**: 在开始集成之前,确保你已经安装了Java Development Kit (JDK) 并设置了相应的环境变量。同时...
在实际开发中,使用jersey-lib时,首先需要在项目中引入对应的Maven或Gradle依赖,然后定义资源类,使用注解来指定URL映射和处理逻辑。同时,可以通过配置文件或编程方式来设置服务器参数,如端口、线程池大小等。...
REST(Representational State Transfer)即表述性状态转移,是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以资源为中心,通过统一的URI(Uniform Resource Identifier)来定位资源,通过HTTP方法(GET、...
10. **持续集成与部署**:Jenkins、Maven和Docker等工具确保Web服务的持续集成和自动化部署,提高开发效率和稳定性。 通过阅读"web-services-with-java.pdf"文档,你可以深入了解如何使用Java来设计、开发、测试和...
这使得你可以在 RESTful 服务开发中享受 Spring 的便利性,同时还能利用 Jersey 提供的强大 REST 功能。在实际项目中,你可能还需要处理更多细节,比如异常处理、安全性设置、日志记录等,但上述步骤是集成的基础。
而“工具”可能指的是Jersey提供的工具类和辅助工具,比如用于测试REST服务的Jersey Test Framework。 在压缩包中,文件名"Jersey"可能是指包含Jersey库的JAR文件、文档或者示例项目的源代码。这些内容可以帮助...
Jersey提供了强大的工具集,包括客户端API、测试框架等,帮助开发和调试REST服务。例如,`Jersey Test Framework`允许在单元测试中模拟HTTP请求。 9. **实例分析** 压缩包中的`RestDemo`可能包含了一个简单的REST...
REST(Representational State Transfer)是一种轻量级的、基于HTTP协议的架构风格,广泛应用于Web应用程序和API设计。Jersey通过提供一组JAX-RS(Java API for RESTful Web Services)实现,使得开发人员能够方便地...
以及相关依赖,包括Spring Boot Starter Web、Spring Boot Starter Thymeleaf、Spring Boot Starter Jersey和Spring Boot Starter Tomcat(作为Provided范围的依赖,仅在编译和测试时使用)。同时,排除Spring Boot ...