Spring整合CXF,发布RSETful 风格WebService

@Produces(MediaType.TEXT_PLAIN)

public String doGet();

@GET

@Produces(MediaType.TEXT_PLAIN)

@Path(“/request/{param}”)

public String doRequest(@PathParam(“param”) String param,

@Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse);

@GET

@Path(“/bean/{id}”)

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

public User getBean(@PathParam(“id”) int id);

@GET

@Path(“/list”)

@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })

public Users getList();

@GET

@Path(“/map”)

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

public MapBean getMap();

/*

@Consumes:声明该方法使用 HTML FORM。

@FormParam:注入该方法的 HTML 属性确定的表单输入。

@Response.created(uri).build(): 构建新的 URI 用于新创建的联系人(/contacts/{id})并设置响应代码(201/created)。

您可以使用 http://localhost:8080/Jersey/rest/contacts/ 访问新联系人

*/

@POST

@Path(“/postData”)

public User postData(User user) throws IOException;

@PUT

@Path(“/putData/{id}”)

@Consumes(MediaType.APPLICATION_XML)

public User putData(@PathParam(“id”) int id, User user);

@DELETE

@Path(“/removeData/{id}”)

public void deleteData(@PathParam(“id”) int id);

}

二、RESTSample接口的实现,这里我们只是简单的实现下,并不是涉及实际的具体业务

package com.hoo.service;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.ws.rs.DELETE;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.PUT;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.Context;

import javax.ws.rs.core.MediaType;

import javax.ws.rs.core.Request;

import javax.ws.rs.core.UriInfo;

import com.hoo.entity.MapBean;

import com.hoo.entity.User;

import com.hoo.entity.Users;

/*

注释(Annotation):在 javax.ws.rs.* 中定义,是 JAX-RS (JSR 311) 规范的一部分。

@Path:定义资源基 URI。由上下文根和主机名组成,资源标识符类似于 http://localhost:8080/RESTful/rest/hello。

@GET:这意味着以下方法可以响应 HTTP GET 方法。

@Produces:以纯文本方式定义响应内容 MIME 类型。

@Context: 使用该注释注入上下文对象,比如 Request、Response、UriInfo、ServletContext 等。

@Path(“{contact}”):这是 @Path 注释,与根路径 “/contacts” 结合形成子资源的 URI。

@PathParam(“contact”):该注释将参数注入方法参数的路径,在本例中就是联系人 id。其他可用的注释有 @FormParam、@QueryParam 等。

@Produces:响应支持多个 MIME 类型。在本例和上一个示例中,APPLICATION/XML 将是默认的 MIME 类型。

*/

/**

* function: CXF RESTful风格WebService

* @author hoojo

* @createDate 2012-7-20 下午01:23:04

* @file RESTSampleSource.java

* @package com.hoo.service

* @project CXFWebService

* @blog http://blog.csdn.net/IBM_hoojo

* @email hoojo_@126.com

* @version 1.0

*/

@Path(value = “/sample”)

public class RESTSampleSource implements RESTSample {

@Context

private UriInfo uriInfo;

@Context

private Request request;

@GET

@Produces(MediaType.TEXT_PLAIN)

public String doGet() {

return “this is get rest request”;

}

@GET

@Produces(MediaType.TEXT_PLAIN)

@Path(“/request/{param}”)

public String doRequest(@PathParam(“param”) String param,

@Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse) {

System.out.println(servletRequest);

System.out.println(servletResponse);

System.out.println(servletRequest.getParameter(“param”));

System.out.println(servletRequest.getContentType());

System.out.println(servletResponse.getCharacterEncoding());

System.out.println(servletResponse.getContentType());

return “success”;

}

@GET

@Path(“/bean/{id}”)

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

public User getBean(@PathParam(“id”) int id) {

System.out.println(“####getBean#####”);

System.out.println(“id:” + id);

System.out.println(“Method:” + request.getMethod());

System.out.println(“uri:” + uriInfo.getPath());

System.out.println(uriInfo.getPathParameters());

User user = new User();

user.setId(id);

user.setName(“JojO”);

return user;

}

@GET

@Path(“/list”)

@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })

public Users getList() {

System.out.println(“####getList#####”);

System.out.println(“Method:” + request.getMethod());

System.out.println(“uri:” + uriInfo.getPath());

System.out.println(uriInfo.getPathParameters());

List list = new ArrayList();

User user = null;

for (int i = 0; i < 4;i ++) {

user = new User();

user.setId(i);

user.setName(“JojO-” + i);

list.add(user);

}

Users users = new Users();

users.setUsers(list);

return users;

}

@GET

@Path(“/map”)

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

public MapBean getMap() {

System.out.println(“####getMap#####”);<

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值