【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. 你需要构 ...
随机推荐
- OPENCV配置 C1083: 无法打开包括文件:“opencv2/opencv.hpp”
本人没实操过C/C++,理论看过不少. 目前出于提升技术的考虑想做OPENCV 配置了2天,总算是配置好了..遇到不少问题. 计算机配置WIN10,用户环境变量配置也郁闷过... JDK等配置方式,配 ...
- ACCESS --第一章
一.ACCESS2007的安装 装完整版的office2007办公软件就集成了相应的ACCESS2007 二.主要组成 ACCESS由表.查询.报表.窗体.页.宏和模块组成 1.表 表是存储数据的对象 ...
- Cannot forward after response has been committed
项目:蒙文词语检索 日期:2016-05-01 提示:Cannot forward after response has been committed 出处:request.getRequestDis ...
- jQuery的ajax中return语句无法返回值
今天在做一个新需求的时候,用到jQuery的ajax来返回一个查询结果: 但是调用这个方法的时候,data有数据,调用的地方获取到的却一直都是undefined,在网上搜索了一些资料,找到了问题所在, ...
- 推荐一个自动抽取pdf高亮笔记的web应用
很多人可能像我一样,喜欢用电脑或平板阅读pdf格式的论文或电子书,阅读过程中难免会使用highlight(高亮)工具标记出重要的文字和段落.有没有办法将所有高亮的部分抽取出来,形成一篇单独的笔记呢?下 ...
- easyUI中datetimebox和combobox的取值方法
easyUi页面布局中,查询条件放在JS中,如下 <script type="text/javascript"> var columnList = [ [ { ...
- 解决php deprecated 的问题
Deprecated :意思是“不推荐” php 5.3 从一方面来讲,可以说在07年计划PHP6的中的一个pre版本,增加了很多功能,统一了很多语法,使PHP变得更加强大与简洁. 说到统计架构规划, ...
- ajax的status为201依然触发jquery的error事件的问题
昨天在调试一个ajax的时候发现,即使status是201,仍然会触发jquery的error事件.statusText是"parseerror". 通过在stackoverflo ...
- C# 加载 SQLite DLL问题
/********************************************************************************* * C# 加载 SQLite DL ...
- LaTeX_fleqn参数时,多行公式对齐居中的同时选择性的加编号
[转载请注明出处]http://www.cnblogs.com/mashiqi 2016/10/20 一年多没写博文了.今天写一个短的,记录一下使用LaTeX的一些经验. 有些时候,我们的latex文 ...
