Jersey与Spring联姻,对JavaBean的支持

来源:互联网 发布:亚马逊kindle阅读软件 编辑:程序博客网 时间:2024/05/16 17:59

  • 前言
  • 配置
    • pomxml配置如下
    • 创建个TestRojava用于传递结构体
    • 编写Jersey的资源创建api接口
  • 测试
  • 总结

1.前言

对于数据量较大的提交,我们一般习惯于用javabean把数据封装起来一起提交,在服务端使用json数据格式接收,映射到jababean上。这里简单写几个例子。

以Spring集成Jersey开发,实现rest约束例子 的例子源码没基础开发,下载地址 提取码:2itw

2.配置

1.pom.xml配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.jax</groupId>    <artifactId>Jersey</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>war</packaging>    <name>Jersey</name>    <url>http://maven.apache.org</url>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <java.version>1.7</java.version>        <java.encoding>UTF-8</java.encoding>        <spring-version>4.2.0.RELEASE</spring-version>        <aspectj-version>1.8.6</aspectj-version>        <jersey-spring>1.18</jersey-spring>    </properties>    <dependencies>        <!-- ================================================= -->        <!-- Spring框架 -->        <!-- ================================================= -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-aop</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context-support</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-tx</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-orm</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-websocket</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-messaging</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-expression</artifactId>            <version>${spring-version}</version>        </dependency>        <!-- ================================================= -->        <!-- AOP相关依赖 -->        <!-- ================================================= -->        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjrt</artifactId>            <version>${aspectj-version}</version>        </dependency>        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>${aspectj-version}</version>        </dependency>        <dependency>            <groupId>cglib</groupId>            <artifactId>cglib</artifactId>            <version>3.1</version>        </dependency>        <!--POJO对象被序列化成 JSON 对象 -->        <dependency>            <groupId>org.glassfish.jersey.media</groupId>            <artifactId>jersey-media-json-jackson</artifactId>            <version>2.26</version>            <exclusions>                <exclusion>                    <groupId>javax.ws.rs</groupId>                    <artifactId>javax.ws.rs-api</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.glassfish.jersey.media</groupId>            <artifactId>jersey-media-json-jettison</artifactId>            <version>2.26</version>        </dependency>        <dependency>            <groupId>com.sun.jersey</groupId>            <artifactId>jersey-json</artifactId>            <version>1.18</version>        </dependency>        <!-- 接入spring注解 -->        <dependency>            <groupId>com.sun.jersey.contribs</groupId>            <artifactId>jersey-spring</artifactId>            <version>1.18</version>            <exclusions>                <exclusion>                    <groupId>org.springframework</groupId>                    <artifactId>spring</artifactId>                </exclusion>                <exclusion>                    <groupId>org.springframework</groupId>                    <artifactId>spring-core</artifactId>                </exclusion>                <exclusion>                    <groupId>org.springframework</groupId>                    <artifactId>spring-web</artifactId>                </exclusion>                <exclusion>                    <groupId>org.springframework</groupId>                    <artifactId>spring-beans</artifactId>                </exclusion>                <exclusion>                    <groupId>org.springframework</groupId>                    <artifactId>spring-context</artifactId>                </exclusion>                <exclusion>                    <groupId>org.springframework</groupId>                    <artifactId>spring-aop</artifactId>                </exclusion>            </exclusions>        </dependency>    </dependencies>    <build>        <finalName>JerseySpring</finalName>        <plugins>            <plugin>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>${java.version}</source>                    <target>${java.version}</target>                </configuration>            </plugin>            <plugin>                <groupId>org.codehaus.mojo</groupId>                <artifactId>tomcat-maven-plugin</artifactId>                <version>1.1</version>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-war-plugin</artifactId>                <version>2.6</version>                <configuration>                    <warName>JerseySpring</warName>                    <failOnMissingWebXml>false</failOnMissingWebXml>                    <!--<webXml>WebContent/WEB-INF/web.xml</webXml> -->                    <webResources>                        <resource>                            <directory>WebContent</directory>                            <filtering>false</filtering>                        </resource>                    </webResources>                </configuration>            </plugin>        </plugins>    </build></project>

其中重点是:

<!--POJO对象被序列化成 JSON 对象 -->        <dependency>            <groupId>org.glassfish.jersey.media</groupId>            <artifactId>jersey-media-json-jackson</artifactId>            <version>2.26</version>            <exclusions>                <exclusion>                    <groupId>javax.ws.rs</groupId>                    <artifactId>javax.ws.rs-api</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.glassfish.jersey.media</groupId>            <artifactId>jersey-media-json-jettison</artifactId>            <version>2.26</version>        </dependency>        <dependency>            <groupId>com.sun.jersey</groupId>            <artifactId>jersey-json</artifactId>            <version>1.18</version>        </dependency>

这几个jar的依赖

2.创建个TestRo.java用于传递结构体:

import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class TestRo {    private String id;    private String name;    private String age;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }}

重点关注

@XmlRootElement

用该注解标识javabean,代码里变量名和传递的参数名保持一致。

3.编写Jersey的资源,创建api接口

import javax.ws.rs.Consumes;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 org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.jax.JerseySpring.bean.TestRo;import com.jax.JerseySpring.mgr.acct.IAcctMgr;@Component@Path("/demo")public class HelloResources {    @Autowired    public IAcctMgr acctMgr;    @GET    @Path("/hello")    public String acct() {        String result = "failure";        try {            result = acctMgr.getAcctByCd("9527");            System.out.println("结果:" + result);        } catch (Exception e) {            System.out.println(e);        }        return result;    }    /**     * 测试传输javabean     */    @POST    @Produces(MediaType.APPLICATION_JSON)    @Consumes(MediaType.APPLICATION_JSON)     @Path("/")    public String addOrder1(TestRo testRo) {        try {            return "post方式,新建成功:";        } catch (Throwable e) {            System.out.println(e);        }        return "post方式,新建失败";    }}

这里同时也测试了使用某个资源的根路径创建URI的例子,对比:
api/demo/

api/demo/hello

3.测试

提交的数据如下图:
这里写图片描述

后台接收到的数据如下:
这里写图片描述

说明后台成功的接收到的javabean数据。

4.总结

以上是使用JAXB的方式传递javabean,其中已经够大部分情况下使用,只要是基本HTTP方式传输的,当然还有一种基本POJO方式。大家可参考Jersey框架二:Jersey对JSON的支持这篇文章,这里不在赘述。

源码下载 密码: itex

原创粉丝点击