Jersey介绍
Jersey是JAX-RS的参考实现,它包含三个主要部分,它可以帮助您实现RESTful Web服务.
核心服务器(Core Server):通过提供JSR 311中标准化的注释和API标准化,可以用直观的方式开发RESTful Web服务.核心客户端(Core Client):Jersey客户端API可以让我们与REST服务轻松通信.集(Integration):Jersey还提供可以轻松集成Spring,Guice,Apache Abdera的库.
Jersey spring整合
Web集成:在web.xml中加入servlet,见配置
<!-- Jersey Servlet 配置 --> <servlet> <servlet-name>JerseyServlet</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JerseyServlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping>
spring集成:将所需要的jar增加至classpath中,见maven pom.xml配置
<!-- rest begin --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>${version.jersey}</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>${version.jersey}</version> </dependency> <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-spring</artifactId> <version>${version.jersey}</version> <!-- 去除自带的spring版本 --> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <artifactId>spring-web</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <!-- rest end -->
示例详解
先看一个最简单的例子
@Component @Path("/user") public class UserResource { @Path("/users/{username}") @GET @Produces(MediaType.TEXT_PLAIN) public String getUser(@PathParam("username") String username) { log.debug("username:{}", username); return username; } }
@Component注解定义此类为spring组件,即bean类.
@Path注解的值是一个相对的URI路径,值得注意的是你仍然可以在URI中嵌入变量,方法如下@Path(“/users/{username}”).
如果需要对userName进行规则匹配,可以自定义的正则表达式,它将覆盖默认的正则表达式”[^/]+”.
例如@Path(“users/{username: [a-zA-Z][a-zA-Z_0-9]}*”),这里username将只匹配一个大写或小写字母和零个或多个字母数字字符和下划线开头,如果给定参数不匹配,将出现404错误.
@Path中定义的URL前后是否有”/”,都不会有影响,但如果你启用了重定向机制,则上面的规则无效.
@GET注解是请求方法指示符,这个指示符注解的Java方法会处理HTTP GET请求.
@Produces注解用于指定MIME类型,通常与MediaType联用,可定义在方法区或者类定义上.
若方法区上与类定义上都指定了@Produces,那么方法区上的@Produces会覆盖掉类定义上的@Produces.
@QueryParam注解用于从请求的URL中提取查询参数,且只能在get请求中使用,@QueryParameter可以转换任何有以String为参数的构造函数类.
@DefaultValue注解表示如果url中参数不存在,则会按DefaultValue给定值赋值,如果url中给定值不是给定类型,则会报404错误.
@Path("save") @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void saveUser(@FormParam("id") String id, @FormParam("username") String username, @Context HttpServletRequest request, @Context HttpServletResponse response) { log.debug("id:{}, username:{}", id, username); log.debug("request:{}, response:{}", request, response); }
@Consumes注解指定了客户端发送的MIME媒体类型,与@Produces一样,通常与MediaType联用,并且可定义在方法区或者类定义上.
@POST注解是请求方法指示符,这个指示符注解的Java方法会处理HTTP POST请求.
@Context注解是注入上下文对象,如Request,Response,UriInfo,Servlet,Context等.
@FormParam注解用于POST请求,@QueryParam用于GET请求,作用与@QueryParam一样.
返回结果
直接返回对象,用@Produces控制输出的格式为Html/Xml/JSON等.
返回Response对象,根据不同的输入参数,决定返回Xml/JSON.
当然,你也可以选择使用JAXB,它可以很方便将其序列化为XML,JSON,当然如果选择使用JSON,你需要使用jackson.
@XmlRootElement public class User { private int id; private String username; public User() { } public User(int id, String username) { this.id = id; this.username = username; } // setter getter // ... }
异常处理
最简单的抛一个干净的500错误,throw new WebApplicationException();
如果需要自定义错误返回码和错误信息,可以使用如下方法
new WebApplicationException(Response.status(status).entity(message).type(MediaType.TEXT_PLAIN).build());
相关推荐
标题中的"jersey+spring rest webservice web maven"是一个基于Java开发的RESTful Web服务架构,它结合了几个关键的技术组件。让我们深入探讨每个部分: 1. **Jersey**: Jersey是Java RESTful Web服务(JAX-RS)...
Jersey是Java RESTful Web服务的实现,而Spring MVC是Spring框架的一部分,专门用于构建Web应用。HTTP服务器在其中扮演了接收和处理客户端请求的角色。 【描述】:“代码来自互联网,经过整理测试可用;大家注意里面...
"jersey+spring+mybatis整合"就是一种常见的Java Web开发模式,它结合了RESTful服务、依赖注入和持久层管理的优势。让我们详细了解一下这三个关键组件以及它们如何协同工作。 1. **Jersey**: Jersey是Java RESTful ...
这个示例旨在帮助开发者理解如何在J2EE环境中构建RESTful Web服务,同时利用Spring框架进行依赖注入和管理。 **Jersey**是Java语言中最受欢迎的实现RESTful Web服务的框架之一,它是JAX-RS(Java API for RESTful ...
"maven(jersey+redis+mongodb+spring)集成"指的是使用Maven作为项目构建工具,将Jersey用于RESTful API开发,Redis作为缓存系统,MongoDB作为NoSQL数据库,以及Spring框架作为应用核心,进行无缝集成的开发模式。...
【标题】"Jersey2.1+mysql+Hibernate4.3+Spring3.2" 描述了一个集成开发环境,该环境结合了四个关键的技术组件,用于构建基于RESTful Web服务的Java应用程序。让我们深入探讨每个组件及其在项目中的作用。 **Jersey...
"Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用" RESTful Web服务简介 ----------------- ...使用Jersey和Tomcat构建RESTful Web服务可以提供灵活的Web服务开发体验,同时也可以提高开发效率和质量。
1. **jersey**:作为Java RESTful Web服务的实现,jersey是JAX-RS规范的一个参考实现。它允许开发者通过简单的注解在Java类和方法上定义RESTful接口,从而轻松地创建REST API。使用jersey,你可以快速构建提供HTTP...
本项目基于Spring4、MyBatis3和Jersey构建了一个RESTful风格的Web服务框架,旨在提供高效、灵活且易于维护的API接口。RESTful架构是一种面向资源的Web服务设计风格,强调简洁、统一的接口,使得客户端与服务器之间的...
它可以与Jersey结合,共同构建RESTful服务。 3. **事务管理**:Spring提供了事务管理功能,确保数据库操作的一致性。 4. **数据访问**:Spring Data可以简化与各种数据存储(如JDBC,ORM框架如Hibernate)的交互,...
指的是一种集成技术,将轻量级的RESTful服务框架Jersey、企业级应用框架Spring 2.5、持久层框架Hibernate 3.3以及Java Persistence API(JPA)结合在一起,以实现高效且灵活的Web应用开发。描述中提到,该集成方案...
4. **Jersey**:作为JAX-RS(Java API for RESTful Web Services)的实现,Jersey用于构建RESTful服务。它允许开发者使用简单的注解将HTTP方法映射到Java方法,提供JSON或XML的输入和输出支持。 5. **MyBatis**:这...
在现代Web开发中,jersey和spring的结合使用已经成为构建RESTful API服务的常见选择。jersey是Java语言中实现 Representational State Transfer (REST) 架构风格的轻量级框架,而spring则是广泛使用的Java企业级应用...
Jersey是Java官方的JAX-RS(Java API for RESTful Web Services)实现,它提供了一套全面的工具和API,用于轻松地构建和部署RESTful服务。通过使用Jersey,开发者可以利用注解(annotations)来定义资源、HTTP方法和...
在Java世界中,Jersey和Spring是两个非常重要的框架,它们分别用于构建RESTful Web服务和企业级应用程序。本文将详细介绍如何将Jersey与Spring进行集成,以便在后台处理JSON数据。我们将探讨以下知识点: 1. **...
再者,Jersey是JAX-RS规范的主要实现,用于构建RESTful Web服务。它允许开发者通过简单的注解将普通的Java方法转换为HTTP资源处理方法。在本项目中,Jersey与Spring4结合,实现了RESTful API的设计,所有请求的...
Jersey是用于构建RESTful Web服务的框架,它基于JAX-RS标准。要使用Jersey,首先需要在项目的`pom.xml`文件中添加依赖: ```xml <groupId>org.glassfish.jersey.core <artifactId>jersey-server <version>...
2. **Jersey**:Jersey是JAX-RS规范的一个实现,用于构建RESTful Web服务。它允许开发者用简单的Java注解来定义HTTP资源,从而简化了Web服务的开发。在本项目中,Jersey与Spring整合,处理HTTP请求并调用后端业务...
Jersey 是一个强大的 Web 服务框架,它支持 SOAP 和 RESTful 风格的服务,并且由 Oracle 公司开发和维护。然而,由于其基于 Servlet 实现,Jersey 存在一个潜在的问题,那就是服务实例是单例的。这意味着所有客户端...
#### 构建RESTful Web服务 本节将介绍如何使用Eclipse和Tomcat构建一个简单的RESTful Web服务。 ##### 开发环境设置 为了构建一个可以集成到Tomcat中的“Hello World”应用程序,您需要准备以下工具和环境: - *...