使用Jersey快速实现rest风格的webservice

JAVA EE6 引入的一个新技术:JAX-RS(Java API for RESTful Web Services)。这是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。它有好几种实现方式,而Jersey是其参考实现方式。Jersey的详细介绍请参考:Jersey官网

说明:Jsersey默认使用maven框架,这里假设你已经安装好maven及tomcat服务。

一 新建测试项目


这一步将新建一个JavaEE Web Application,可以打包成war包并部署到服务器上。
执行下面的mvn命令新建工程。
    mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-webapp \
                -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
                -DgroupId=com.example -DartifactId=simple-service-webapp -Dpackage=com.example \
                -DarchetypeVersion=2.22.2
   
其中groupId,artifactId ,package 可以更换。
理论上也可以用eclipse创建这个工程,但本人在eclipse的maven模板中找不到jersey-quick-webapp,所以还是使用的命令创建。
创建好后默认的工程目录是这样的:
如上图,工程模板非常简单,只有如上四个文件,不需要任何修改便能测试。其中MyResouce.java代码如下:
package com.example;

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

/**
 * Root resource (exposed at "myresource" path)
 */
@Path("myresource")
public class MyResource {

    /**
     * Method handling HTTP GET requests. The returned object will be sent
     * to the client as "text/plain" media type.
     *
     * @return String that will be returned as a text/plain response.
     */
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }
}

其中@Path和@GET指明了使用get方法访问子路径myresource便会返回"Got it!"。

web.xml中还配置了servlet-mapping:
 <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>

这样在本机部署好项目后,访问localhost:8080/simple-service-webapp/webapi/myresource便会得到“Got it!”的字符串。

二 测试


这一步可以在eclipse上完成。但这里介绍如何打包成war并部署到tomcat。
在工程的pom.xml目录运行
mvn clean package

这样会在该目录下生成一个target文件夹,将target下面的simple-service-webapp.war拷贝到tomcat的webapps下面。
启动tomcat服务:
startup.bat
启动成功后再浏览器中访问:
测试OK!

三 使用Json


官方文档中介绍了好几种方法,这里介绍基于JAXB的MOXy方法。这个方法使用起来也很简单。只需要把pom.xml中相应的注释去掉即可
<!-- uncomment this to get JSON support
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
        </dependency>
        -->
去掉注释后添加测试类User.java。代码如下:
package com.example;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.xml.bind.annotation.*;

@Path("user/{username}")

@XmlRootElement
public class User {
	public String 	name;
	public int 		age;
	
	public User(){}
	
	public User(String name, int age){
		this.name = name;
		this.age = age;
	}
	
	@GET
	@Produces("application/json")
	public User getUser(@PathParam("username") String userName){
		return new User(userName, 28);
	}
}

完成后按照第二部重新部署,在浏览器中测试如下:

后记:官方文档中还详细介绍了HTTP的POST,PUT,DELETE及URL中的参数处理,还有更多关于Jersey的知识。欲了解更多请参考官网。
完整工程下载:simple-service-webapp
发布了28 篇原创文章 · 获赞 26 · 访问量 26万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览