使用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
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx基础知识,</span><span>解读Nginx核心知识、带领学员进行</span>高并发环境下Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页