【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. 你需要构 ...
随机推荐
- Ubuntu系统下Xen虚拟机的基本安装方法(代码创建)
Ubuntu上Xen安装虚拟机方法一dd一个空的磁盘sudo dd if=/dev/zero of=/home/vm1.img bs=1G count=8 下载Xen VM通用配置文件 sudo wg ...
- CxImage在VS2010下的配置
http://blog.csdn.net/youzhuo/article/details/24601621 一.编译Cximage 1.在SourceForge上下载cximage702_full.7 ...
- PAT 5-8 File Transfer (25分)
We have a network of computers and a list of bi-directional connections. Each of these connections a ...
- 【Learning Python】【第四章】Python代码结构(一)
这一章的主旨在于介绍python的代码结构 缩进 在很多的编程语言中,一般{}用于控制代码块,比如以下的一段C代码 if(var <= 10) { printf("....." ...
- [GodLove]Wine93 Tarining Round #10
比赛链接: http://www.bnuoj.com/v3/contest_show.php?cid=4159 题目来源: lrj训练指南---几何算法 Flag ID Title A Board ...
- 用python+selenium抓取豆瓣读书中最受关注图书并按评分排序
抓取豆瓣读书中的(http://book.douban.com/)最受关注图书,按照评分排序,并保存至txt文件中,需要抓取书籍的名称,作者,评分,体裁和一句话评 方法一: #coding=utf-8 ...
- Oracle expdp按分区导出生成参数文件
使用dba_tab_partitions视图获得每个分区的参数文件内容,使用chr(10)分行 select 'content=data_only'||chr(10)|| 'directory=dat ...
- 解析C语言结构体对齐(内存对齐问题)
C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...
- HTTP、FTP状态码 (share)
来源:http://www.cnblogs.com/setsail/archive/2012/03/23/2413577.html HTTP1xx - 信息提示(这些状态代码表示临时的响应.客户端在收 ...
- 前端开发薪资之各地区对比(图文分析)(share)
发现最近大家都在关注有关前端开发的薪资问题,不同地方各有差异,今天我就总结一下发出来方便大家的查阅.(2014年) 前面给大家介绍了关于前端开发需要学习的东西,根据你掌握的技能程度,薪水是不一样的.d ...
