使用Jersey快速实现rest风格的webservice
发布时间:2020-12-16 22:13:45 所属栏目:安全 来源:网络整理
导读:JAVA EE6 引入的一个新技术: JAX-RS( Java API for RESTful Web Services )。这 是一个Java 编程语言的应用程序接口 ,支持按照表述性状态转移(REST)架构风格创建Web服务。它有好几种实现方式,而Jersey是其参考实现方式。Jersey的详细介绍请参考:Jers
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> 二 测试
这一步可以在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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读