REST WebService简单应用

阅读更多

  最近项目中WebService采用REST风格的WebService实现。

   官方文档地址:

http://jersey.java.net/nonav/documentation/latest/index.html

 

Jersey的四种行为

对应我们日常说的CRUD.

方法/资源

资源集合; URI 如:
http://host/api/resources

成员资源; URI 如:
http://host/api /resources/123

对应的操作

POST

列出资源集合的所有成员。

检索标识为 1234 的资源的表示形式。

C(创建)

GET

使用一个集合更新(替换)另一个集合。

更新标记为 1234 的数字资源。

R(读取)

PUT

在集合中创建数字资源,其ID 是自动分配的。

在下面创建一个子资源。

U(更新)

DELETE

删除整个资源集合。

删除标记为 1234 的数字资源。

D(删除)

 

相关的架包结构

·      核心服务器:jersey-core.jar,jersey-server.jar,jsr311-api.jar,asm.jar

·      核心客户端:(用于测试)jersey-client.jar

·      JAXB 支持:(在高级样例中使用)jaxb-impl.jar,jaxb-api.jar,activation.jar,stax-api.jar,wstx-asl.jar

·      JSON 支持:(在高级样例中使用)jersey-json.jar

·      Spring支持:(在高级样例中使用)jersey-spirng.jar

元注解信息说明

生存周期说明

1.       默认不使用注解,表示生存周期等于request,请求过后自动销毁,默认是线程安全的。

2.       application,使用@Singleton注解。生存周期等于整个应用程序的生存周期。

3.       session,使用@PerSession注解。生存周期等于一个session请求,session销毁,该rest资源实例也同时销毁。

Bean注解说明

1.@Path路径信息,表示映射出去的访问路径。
范例如下:@Path("/myResource")

2. @Produces用于限制postget方法返回的参数类型,支持jsonstringxmlhtml
范例如下:@Produces({"application/xml", "application/json"})

3. @Consumes用于限制输入的参数的类型,支持jsonstringxmlhtml
范例如下:@Consumes("text/plain")

4. @QueryParam@DefaultValue通过request传入的参数,@DefaultValue表示默认参数。
范例如下:@DefaultValue("2") @QueryParam("step")        int step,

5. @PathParam @ MatrixParam@ HeaderParam@ CookieParam@@ QueryParam FormParam听从以相同的规则。@ MatrixParam提取URL路径段的信息。 @ HeaderParam提取的HTTP头信息。 @ CookieParam提取信息的Cookie饼干宣布相关的HTTP标头。@ FormParam略有特殊,因为它提取请求表示,该类型匹配前面的@Consumes所声明的类型。
范例如下:

  @POST

  @Consumes("application/x-www-form-urlencoded")

  public void post(@FormParam("name")   String name) {

6.pojo层面等相关注解,@XmlRootElement,支持JPA注解。

7.Spring相关注解,比如@Autowired(required=true@Qualifier("persionDao")@Component

@Scope("request")

 

 

 

简单demo的结构如下:

 

 

REST WebService简单应用_第1张图片

 

 

 简单的开发代码如下:

 

package com.easyway.jaxrs.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
 * 采用JAX-RS方式
 * @author longgangbai
 *  http://localhost:8080/JAXRSWS/services/hello
 *  
 *  
 *  @Path  注解访问的路径
 *  @GET   Http请求的方式
 *  @Produces  响应结果的形式
 *  
 */
@Path("/hello")  
public class HelloWS {

	/**
	 * 通过HTTP访问到WebService到方式
	 * 
	 * http://localhost:8080/JAXRSWS/services/hello
	 * 
	 * 文本格式返回给客户端
	 * @return
	 */
	@GET   
	@Produces(MediaType.TEXT_PLAIN)
	public String sayPlainTextHello() {
		return "Hello Jersey";
	}
	
	/**
	 * xml格式返回给客户端
	 * @return
	 */
	@GET
	@Produces(MediaType.TEXT_XML)
	public String sayXMLHello() {
		return "" + " Hello Jersey" + "";
	}

	/**
	 * html格式的接受
	 * @return
	 */
	@GET
	@Produces(MediaType.TEXT_HTML)
	public String sayHtmlHello() {
		return " " + "" + "Hello Jersey" + ""
				+ "

" + "Hello Jersey" + "

" + " "; } }

 

 Web.xml配置如下:



  
  	JAX-RS REST Servlet
  	JAX-RS REST Servlet
  	
  		com.sun.jersey.spi.container.servlet.ServletContainer
  	
  	
  	   com.sun.jersey.config.property.packages
  	   com.easyway.jaxrs.rest
  	
  	1
  
  
  	JAX-RS REST Servlet
  	/services/*
  
  
    index.jsp
  

 

 

 

index.jsp页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'index.jsp' starting page
	
	
	    
	
	
	
	
	
  
  
  
  
  
  
  

 

  • JAXRSWS.rar (8.8 MB)
  • 下载次数: 126

你可能感兴趣的:(REST WebService简单应用)