【Jersey】基于Jersey构建Restful Web应用

环境说明
- java: 1.6;
- tomcat: 6.0.48;
- Jersey:1.18;
Jersey介绍
构建基于Maven的Javaweb程序

主项目pom:
<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ll</groupId><artifactId>MyStudyProject</artifactId><version>1.0.0</version><packaging>pom</packaging><distributionManagement><site><id>website</id><url>scp://webhost.company.com/www/website</url></site></distributionManagement><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><modules><module>MapReduce</module><module>Lucene</module><module>Dependencies</module><module>DesignPattern</module><module>Javaweb</module></modules></project>
Javaweb模块pom
Maven依赖
Spring相关Jar
<properties><springVersion>3.2.13.RELEASE</springVersion></properties><!-- Spring start --><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${springVersion}</version></dependency<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${springVersion}</version></dependency<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${springVersion}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${springVersion}</version><type>jar</type><scope>compile</scope></dependency><!-- spring end -->
Jersey相关Jar
<properties><Dependency.version>1.0.0</Dependency.version><Jersey.version>1.18</Jersey.version></properties><!-- Jersey start --><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-server</artifactId><version>${Jersey.version}</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-json</artifactId><version>${Jersey.version}</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>${Jersey.version}</version></dependency><dependency><groupId>com.sun.jersey.contribs</groupId><artifactId>jersey-spring</artifactId><version>${Jersey.version}</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-web</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></exclusion></exclusions></dependency><!-- Jersey end -->
Web.xml
配置Spring相关属性
<!--Spring 文件路径 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:conf/beans/beans-*.xml</param-value></context-param><!-- spring上下文监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener><listener-class>org.springframework.web.context.request.RequestContextListener<listener-class></listener>
Jersey配置Servlet
<!-- jersey Servlet --><servlet><servlet-name>rest-inside</servlet-name><servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class><init-param><param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name><param-value>true</param-value></init-param><init-param><param-name>com.sun.jersey.config.property.packages</param-name><param-value>com.ll.rest</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>rest-inside</servlet-name><url-pattern>/i/rest/*</url-pattern></servlet-mapping>
- 使用SpringServlet;
- POJOMappingFeature: 用于Json和Pojo对象的转换;
- com.sun.jersey.config.property.packages: 代表服务器端路径;
完整的Web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><display-name>Java Web</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!--Spring 文件路径 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:conf/beans/beans-*.xml</param-value></context-param><!-- spring上下文监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener><!-- 解决中文乱码 --><filter><filter-name>SetCharacterEncoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>false</param-value></init-param></filter><filter-mapping><filter-name>SetCharacterEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- jersey Servlet --><servlet><servlet-name>rest-inside</servlet-name><servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class><init-param><param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name><param-value>true</param-value></init-param><init-param><param-name>com.sun.jersey.config.property.packages</param-name><param-value>com.ll.rest</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>rest-inside</servlet-name><url-pattern>/i/rest/*</url-pattern></servlet-mapping></web-app>
Jersey服务端代码

package com.ll.rest;import javax.ws.rs.Consumes;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;import com.ll.model.Student;@Path("/student")public class JerseyServerTest {@Path("get/{name}")@GET@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)public Student status(@PathParam("name") String name) {System.out.println("get Student, name: "+name);Student student = new Student();student.setAge(25);student.setName(name);student.setSchool("SuZhou");return student;}}
安装tomcat,并部署Javaweb
配置Javaweb为tomcat默认项目
- 配置文件名称:server.xml
<Context path="" docBase="C:\xxx\Javaweb" debug="0" reloadable="true"/>
启动tomcat
测试Jersey
方式1: 使用postman插件测试

方式2: 编写Jersey的Client程序进行测试
import javax.ws.rs.core.MediaType;import javax.ws.rs.core.MultivaluedMap;import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.config.ClientConfig;import com.sun.jersey.api.client.config.DefaultClientConfig;import com.sun.jersey.api.json.JSONConfiguration;public class StudentDao {private Client client;public void init() {if (client == null) {ClientConfig config = new DefaultClientConfig();config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,true);client = Client.create(config);client.setConnectTimeout(3000);}}public Student get(String url, String path,MultivaluedMap<String, String> queryParams) {try {return queryParams == null ? client.resource(completeUrl(url)).path(path).type(MediaType.APPLICATION_JSON).get(Student.class): client.resource(completeUrl(url)).queryParams(queryParams).path(path).type(MediaType.APPLICATION_JSON).get(Student.class);} catch (Exception e) {return null;}}private String completeUrl(String url) {url = url.toLowerCase();if (url.startsWith("http://")) {return url;} else {return "http://" + url;}}public static void main(String[] args) {StudentDao dao = new StudentDao();dao.init();Student ret = dao.get("http://127.0.0.1:8080/","i/rest/student/get/Tom", null);System.out.println("请求返回:");System.out.println(ret);}}
【Jersey】基于Jersey构建Restful Web应用的更多相关文章
- 基于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 ...
- 构建一个基于 Spring 的 RESTful Web Service
本文详细介绍了基于Spring创建一个“hello world” RESTful web service工程的步骤. 目标 构建一个service,接收如下HTTP GET请求: http://loc ...
- 用于构建 RESTful Web 服务的多层架构
作者:Bruce Sun, Java 架构师, IBM 出处:http://www.ibm.com/developerworks/cn/web/wa-aj-multitier/ 用于构建 RESTfu ...
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
原文地址:http://www.ibm.com/developerworks/cn/web/wa-restful/ 简介: Spring,构建 Java™ 平台和 Enterprise Edition ...
- Guzzle – 构建 RESTful Web 服务的 PHP HTTP 框架
Guzzle 减轻了发送 HTTP 请求和创建 Web 服务客户端的痛苦.它包含建立一个强大的网络服务客户端的工具,包括:服务描述定义的输入和输出的 API,资源迭代器遍历分页资源,尽可能有效地发送大 ...
- 使用 RestEasy 和 Apache Tomcat 构建 RESTful Web 服务
第一次,用这个RestEasy框架,用的时候,总是提示,404的错误,郁闷,呵呵,不过经过努力,终于解决问题,特别留个标记. 关于404的错误,上网找了一大堆,也还不行. 我感觉应该是lib下面架包的 ...
- SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务
一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- 使用 Spring Boot Actuator 构建 RESTful Web 应用
Spring Boot Actuator 是 Spring Boot 的一个子项目.通过它,可以很轻易地为应用提供多种生产级服务.本教程中,你将通过构建一个应用来学习如何添加这些服务. 1. 你需要构 ...
随机推荐
- Linux命令全称
知其表亦需知其意 apt = Advanced Packaging Tool ar = archiver as = assembler awk = "Aho Weiberger and Ke ...
- Android 终于官方支持按百分比来设置控件的宽高了
dependencies { compile 'com.android.support:percent:22.2.0' } 支持布局 PercentRelativeLayout <android ...
- Codeforces 570C 贪心
题目:http://codeforces.com/contest/570/problem/C 题意:给你一个字符串,由‘.’和小写字母组成.把两个相邻的‘.’替换成一个‘.’,算一次变换.现在给你一些 ...
- 关于HTML标签那些事儿
关于html相信对于每一个互联网从业者来说实在熟悉不过的一个名词,特别是web前端工程师来说更是基础中的基础.html是hyper text markup language的首字母缩写,翻译过来就是超 ...
- css总结(更新中...)
下面总结的都是我实际使用后有效的. 1.select的默认样式不好看,怎么去掉默认样式呢,如下: .select{text-indent: inherit !important; background ...
- HDU 5015
http://acm.hdu.edu.cn/showproblem.php?pid=5015 矩阵是表示状态转移的利器 这题m很大,n非常小,所以开始的思考角度是能否从当前列推出下一列.有了这个角度, ...
- web页面放到手机页面,缩放问题
有时候写页面样式不规范,很多页面元素写死尺寸时,web页面尺寸比较大放到移动端访问时,就背缩放了,div或者按钮变得好小 可以加段js,效果会好点 <script> ! function( ...
- Ruby on Rails搭建环境出现的问题及解决方案
问题一:在win7系统64位环境下执行cmd命令:rails new testapp 之后,回报如下图错误:Gem:installer::ExtensionBuildError: ERROR:Fail ...
- NSUserDefaults
一.了解NSUserDefaults以及它可以直接存储的类型二.使用 NSUserDefaults 存储自定义对象1.将自定义类型转换为NSData类型2.将自定义类型数据存入 NSUserDefau ...
- 本地计算机 上的 OracleOraDb11g_home1TNSListener 服务启动后停止
今天玩oracle的时候突然遇到一个问题:本地计算机 上的 OracleOraDb11g_home1TNSListener 服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止. 在网上找解决 ...
