jersey实现rest实例

以前项目中采用的axis2发布webservice接口,近期用户要求提供rest方式来实现接口的发布,要求速度尽可能快的实现这种方式,所以就采用jersey来做rest的实现。以下就是在项目中采用jersey实现rest的步骤,仅供参考。

 

首先到jersey官网下载,目前最新的版本是jersey2.4.1,那会我下载用的版本是jersey1.18,这里也以1.18版本来做的集成。下载地址:https://jersey.java.net/download.html,下载下来以后,将zip文件解压到当前 目录,解压后的目录结构:

 

  然后开始拷贝jar包到项目中,如果项目中使用的请求,返回数据格式是xml、text这些数据类型,那么jersey已经提供,就只拷贝lib、contribs文件夹下的jar到项目中就ok了,如果考虑使用json数据格式,还需要下载几个额外的依赖jar,我项目中要求接口返回json数据格式,所以还多了适配json的依赖包,下面分别列出lib、contribs、json对应的jar:

  

 将jersey所需要的依赖包导入项目以后,就开始集成了。

配置jersey请求拦截器 ,在web.xml中加入以下配置

<servlet>
        <servlet-name>JAX-RS REST Servlet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
           <param-value>com.json</param-value>
       </init-param>
        
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>JAX-RS REST Servlet</servlet-name>
        <url-pattern>/jaxrs/*</url-pattern>
    </servlet-mapping>

com.json.JsonResource一个要要发布为rest方式的接口类

package com.json;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

 

@Path("test")
public class JsonResource {

    @GET
    @Path("createSimpleBean")
    @Produces( MediaType.APPLICATION_JSON)
    public TestBean createSimpleBean() {
        return new TestBean("a", 1, 1L);
    }
   
    @GET
    @Path("getHello/{some}/{flag}")
    @Produces("text/plain")
    public String getHello(@PathParam(value="some")String somebody, @PathParam(value="flag")int flag) {
        return "Hello World!" + somebody + "-" + flag;
    }
}

com.json.TestBean是一个可以转换成xml,json数据格式的java类

 

package com.json;

import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
public class TestBean {
    public String a;
    public int b;
    public long c;

    public TestBean() {
    }

    public TestBean(String a, int b, long c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public String getA() {
        return a;
    }

    public int getB() {
        return b;
    }

    public long getC() {
        return c;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TestBean that = (TestBean) o;

        if (b != that.b) return false;
        if (c != that.c) return false;
        if (a != null ? !a.equals(that.a) : that.a != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = a != null ? a.hashCode() : 0;
        result = 31 * result + b;
        result = 31 * result + (int) (c ^ (c >>> 32));
        return result;
    }
}

 

项目中用到的注解,这里就不做说明了,在jersey的api中都有说明。

 

将项目TestJersey2部署到tomcat中,端口采用8080,项目名称就叫TestJersey2。

 

测试json:http://localhost:8080/TestJersey2/jaxrs/test/creatSimpleBean     

返回:

{"a":"a","b":"1","c":"1"}
测试text:http://localhost:8080/TestJersey2/jaxrs/test/getHello/world/100
返回:
Hello World!world-100
 
以上就是项目中集成jersey实现rest方式的主要步骤,在集成jersey时,刚开始选择的版本是2.4.1,在引入json依赖包时,暴露了一些问题,当时由于时间紧迫,就选择了1.18,该版本,官网提供的依赖包大部分都有,无需自己再去找相关的依赖包,这给我节约了时间。
 
 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值