当前位置:首页 > 开发 > 互联网 > 正文

Jersey 简介

发表于: 2013-08-20   作者:antlove   来源:转载   浏览次数:
摘要: 一 Jersey简介 Jersey是 JAX-RS API的一个实现,通过它可以方便的开发RESTful Web services。 Http中的常用方法与REST中资源的CURD操作对应 方法 REST中的资源的操作 GET 检索资源 PUT 更新资源 POST 创建资源 DELETE 删除资源   二 Jersey简单例子 使用jar包

一 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要注入的参数将无法获取值,因为流已经被读取了。

 

 

 

Jersey 简介

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
同样是Maven构建的项目,不解释。 项目目录结构: pom.xml <project xmlns="http://maven.apache
在使用Jersey的restful的过程中,对于Http Cache有一定的基础了解, Cache-Control -private/public
在使用Jersey的restful的过程中,对于Http Cache有一定的基础了解, Cache-Control -private/public
这两天有幸玩了把Jersey,Jersey是RESTful的封装,通过Jersey可以快速地开发出web service。目前,J
一、背景 最近,Jersey学习群组的朋友越来越多,很多朋友问一些非常基础的问题,我看这种现象普遍存
1、Jersey是什么 ? Jersey是Oracle公司推出的restful框架属于glassfish项目。可以集成至tomcat、je
最近公司一个新项目,开发团队分布在不同的国度,加拿大团队负责网站前端开发,国内团队负责后台服
本文演示环境为eclipse + Maven插件 + Jersey framework。本文只关注Jersey的使用,所以只使用类中
项目中更需要使用到webservice,具体的是使用jersey。那么首先需要了解jersey和webservice的关系,
原文地址http://www.vogella.com/articles/REST/article.html 从rest最基本的知识开始介绍,有介绍
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号