`

Jersey 简介

    博客分类:
  • jdk
阅读更多

一 Jersey简介

Jersey是 JAX-RS API的一个实现,通过它可以方便的开发RESTful Web services。

Http中的常用方法与REST中资源的CURD操作对应

方法 REST中的资源的操作
GET 检索资源
PUT 更新资源
POST 创建资源
DELETE 删除资源

 

二 Jersey简单例子

使用jar包 : asm-3.3.1.jar, jersey-core-1.1.4.1.jar, jersey-server-1.1.4.1.jar, jsr311-api-1.1.1.jar

 

IUserMgtWeb.java

package controller;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.sun.jersey.api.view.Viewable;
@Path("/user")
public interface IUserMgtWeb {
	@POST
	@Path("/login")
	@Produces(MediaType.TEXT_HTML)
	public Viewable login(@FormParam("username") String username,
			@FormParam("password") String password);
	
	@GET
	@Path("/info")
	@Produces(MediaType.APPLICATION_JSON)
	public Response getUserInfo();
}

 

UserMgtWebImpl.java

package controller.impl;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import com.sun.jersey.api.view.Viewable;
import controller.IUserMgtWeb;
@Path("/user")
public class UserMgtWebImpl implements IUserMgtWeb {
	@Override
	public Viewable login(String username,String password) {
		if("admin".equals(username)&&"admin".equals(password)){
			System.out.println("nice man!");
			return null;
		}else{
			System.out.println("username:"+username+",password:"+password);
			return new Viewable("/login.html",null);
		}
	}
	
	@Override
	public Response getUserInfo() {
		return Response.ok("{id:'001',name:'sam'}").build();
	}
}

 

UserMgtApplication.java

package application;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import controller.IUserMgtWeb;
import controller.impl.UserMgtWebImpl;
public class UserMgtApplication extends Application{
	private Set<Object> singletons = new HashSet<Object>();
	private Set<Class<?>> empty = new HashSet<Class<?>>();
	
	@Override
	public Set<Class<?>> getClasses() {
		return empty;
	}
	@Override
	public Set<Object> getSingletons() {
		return singletons;
	}
	public UserMgtApplication(){
		empty.add(IUserMgtWeb.class);
		singletons.add(new UserMgtWebImpl());
	}
}

 

 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>Jersey</display-name>
	<servlet>
		<servlet-name>UserMgtWebRest</servlet-name>
		<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<!-- 		<init-param> -->
<!-- 			<param-name>javax.ws.rs.Application</param-name> -->
<!-- 			<param-value>application.UserMgtApplication</param-value> -->
<!-- 		</init-param> -->
		<!-- 如果启用以下执行jersey初始化,那么容器将对指定包内的class都当作singletons做处理,
		            此时必须在相应的实现类中有rest相应注解出现,否则容器会报错 -->
		<init-param>
	      <param-name>com.sun.jersey.config.property.packages</param-name>
	      <param-value>controller.impl</param-value>
	    </init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>UserMgtWebRest</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>
</web-app>
 

login.html

<!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="/Jersey/rest/user/login" method="post">
		<label>username:</label>
		<input type="text" name="username"/>
		<label>password:</label>
		<input type="password" name="password"/>
	    <input type="submit" value="submit"/>
	</form>
</body>
</html>

 

Note:

尽量不要使用PUT与DELETE方法,因为如果使用PUT或者DELETE方法,在后台通过request.getParameter("username")获取不到相应的数据。只能通过request.getInputStream()获取流中数据在解析。

如果使用PUT与DELETE方法并且通过FormParam注入参数,但是在filter或者其他代码快【先于注入方法的任意代码】中读取了request.getInputStream()流中信息,这FormParam要注入的参数将无法获取值,因为流已经被读取了。

 

 

 

分享到:
评论
2 楼 antlove 2013-08-20  
lijiejava 写道
好!!!

thx!!!
1 楼 lijiejava 2013-08-20  
好!!!

相关推荐

    Jersey开发指南

    - **Jersey简介**:Jersey是Sun Microsystems(后被Oracle收购)为实现RESTful Web Services而开发的一个框架。作为JAX-RS(JSR 311/339/367/370)规范的参考实现,它提供了创建和访问RESTful服务的一整套工具和服务...

    jersey 开发所需jar

    1. **Jersey简介** Jersey是JAX-RS(Java API for RESTful Web Services)规范的实现,JAX-RS是Java EE的一部分,用于简化REST服务的开发。通过使用注解和Java对象,开发者可以快速创建处理HTTP请求的方法,如GET、...

    jersey 一起学习 1讲

    2. **Jersey简介**:作为JAX-RS的实现,Jersey提供了一整套工具和服务,包括API、Servlet容器集成、过滤器、提供者等,使得开发RESTful服务变得简单。 3. **基本概念**:在学习Jersey时,我们通常会接触到如`@Path`...

    jersey和Google Protocol Buffer开发Demo

    【知识点一】:Jersey简介 Jersey是Java语言中实现Representational State Transfer (REST)架构风格的开源框架,它是JAX-RS(Java API for RESTful Web Services)规范的参考实现。通过Jersey,开发者可以轻松地创建...

    Jersey 使用手册

    #### 二、Jersey简介 Jersey是基于Java平台的一个完全符合JSR 311(Java API for RESTful Web Services)标准的实现框架。其设计目标是使开发者能够轻松地创建RESTful Web服务,并提供了一整套API来支持这一过程。...

    jersey 2.25.1

    ** Jersey简介 ** Jersey 提供了一个轻量级的、模块化的框架,允许开发者快速构建和部署RESTful服务。它支持多种功能,如HTTP请求处理、URL映射、内容协商、错误处理等。此外,Jersey可以与各种容器集成,如Tomcat...

    Jersey1.8在spring环境下的实现 包括实例代码

    1. **Jersey简介:** Jersey是JAX-RS(Java API for RESTful Web Services)规范的一个实现,提供了一套用于构建RESTful服务的API。它允许开发者使用Java注解来定义资源类和方法,简化了Web服务的创建。 2. **...

    Jersey 2.23.2 User Guide 离线文档 Jersy API

    **一、Jersey简介** Jersey是Java平台上的一个开源框架,主要用于构建RESTful Web服务。它基于JAX-RS(Java API for RESTful Web Services)规范,提供了一套全面的工具和服务,简化了开发人员在创建、部署和管理...

    Jersey+Spring集成,后台接受或返回Json数据

    1. **Jersey简介**: Jersey是JAX-RS规范的实现,它提供了一种简单的方式来创建RESTful Web服务。通过使用注解,开发者可以在Java类和方法上定义HTTP操作(如GET、POST等)和资源路径。 2. **Spring简介**: ...

    使用Jersey开发server和client及wadl2java所需的jar

    1. **Jersey简介**: Jersey是一个开源框架,用于构建符合JAX-RS标准的RESTful服务。它提供了丰富的特性和工具,包括注解驱动的编程模型、内容协商、过滤器、拦截器等,使得开发者可以便捷地创建、部署和管理...

    Jersey实例

    二、Jersey简介 Jersey是Sun Microsystems(现已被Oracle收购)开发的一个开源项目,它是Java语言中实现RESTful服务的JAX-RS(Java API for RESTful Web Services)规范的参考实现。它提供了一套完整的框架,帮助...

    完整jersey包和jackson-all-1.9.2.jar

    1. **Jersey简介**:Jersey是开源的、轻量级的、基于标准的、完全符合JAX-RS的RESTful服务实现。它允许开发者通过简单的注解来定义资源类,这些类可以被映射到HTTP请求上,从而提供RESTful服务。 2. **功能特性**:...

    jersey+spring

    一、jersey简介 jersey是基于JAX-RS标准的RESTful服务实现,它提供了一套全面的工具集来创建和部署RESTful服务。通过jersey,开发者可以方便地定义资源类,通过HTTP方法(如GET、POST、PUT、DELETE)处理请求,并...

    jersey rest web services整理

    一、Jersey简介 Jersey是由Sun Microsystems(现已被Oracle收购)开发的开源项目,它是JAX-RS(Java API for RESTful Web Services)规范的参考实现。JAX-RS为开发RESTful服务提供了一套标准的注解,使得开发者可以...

    JAX-RS-FileUpload-Jersey-Example

    **Jersey简介** Jersey是Sun Microsystems开发的开源项目,它是JAX-RS规范的参考实现。它提供了一个全面的框架,包括处理器、过滤器、提供者、容器和扩展,帮助开发者快速构建高质量的RESTful服务。通过使用Jersey,...

    RESTful webservices – Client API in Java - Jersey

    #### 二、Jersey简介及其作用 **Jersey**是Java平台上JAX-RS规范的一个参考实现。它既提供了服务器端的API,也包括了客户端模块。服务器端API包括`@Path`、`@GET`、`@Produces`等注解,用于构建RESTful服务;而...

    jersey和spring集成使用

    1. **Jersey简介**: Jersey是实现Java RESTful Web服务的开源框架,它基于JAX-RS(Java API for RESTful Web Services)标准。它提供了创建、部署和消费RESTful服务所需的一系列API和工具。 2. **Spring框架**: ...

    Jersey 2.25.1 User Guide

    - **2.4 模块列表**:详细列出了 Jersey 提供的所有模块,以及它们的功能简介。 ##### 3. JAX-RS 应用、资源与子资源 - **3.1 根资源类**: - **@Path**:标记资源类的 URL 路径。 - **HTTP 方法 (@GET, @PUT, @...

    jersey框架

    Jersey 框架简介** Jersey 提供了一整套工具和服务,用于快速构建高性能的 RESTful 服务。通过使用注解,开发者可以轻松地将 HTTP 方法(如 GET、POST、PUT 和 DELETE)映射到 Java 类和方法,从而简化服务的创建。...

    Jersey的代码资源

    **二、JAX-RS 简介** JAX-RS 是 Java 平台上定义的一套用于创建 RESTful Web 服务的标准 API,它简化了 REST 服务的开发过程。Jersey 实现了 JAX-RS 规范,提供了一套全面的工具集,包括注解、API 和运行时组件,...

Global site tag (gtag.js) - Google Analytics