关于RestEasy 及相关知识的简介这里不再赘述。网上可以搜到很多可以查看的文章。这里只介绍Quick Start。可以看到RestEasy的官方说明文档的hello world 部分并不好找。这里自己写了一个quick start 希望大家看了以后可以快速上手阅读官方文档。
RestEasy 是基于Servlet的一个 Restful 框架,所以可以借助 Tomcat,Jetty,JBoss等Servlet 容器服务器启动RestEasy。本文主要介绍三种方式:resteasy.scan , resteasy.resources , javax.ws.rs.core.Application.
当然看这篇文章之前,还是要对RestEasy的一些注解有所了解。@GET,@QueryParam,@Path.都不难理解,百度一搜就有解释。
一 、 通用部分的代码
首先我们需要使用Maven来构建一个webapp项目。Maven代码如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 <groupId>Personnal</groupId> 7 <artifactId>RestEasyStudy</artifactId> 8 <version>1.test</version> 9 <packaging>war</packaging> 10 <name/> 11 <description/> 12 13 14 15 <dependencies> 16 <dependency> 17 <groupId>org.jboss.resteasy</groupId> 18 <artifactId>resteasy-jaxrs</artifactId> 19 <version>1.2.1.GA</version> 20 </dependency> 21 </dependencies> 22 23 <build> 24 <finalName>RestEasyStudy</finalName> 25 <plugins> 26 <plugin> 27 <groupId>org.apache.maven.plugins</groupId> 28 <artifactId>maven-compiler-plugin</artifactId> 29 <configuration> 30 <source>1.8</source> 31 <target>1.8</target> 32 </configuration> 33 </plugin> 34 </plugins> 35 </build> 36 </project>
很简单对不对,RestEasy版本有点老,因为我们项目用的是这个版本,所以我就索性先研究这个版本,其实quick start的方法都差不多,大家可以接着研究新的版本。下面对web.xml进行配置。
1 <?xml version="1.0"?> 2 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd"> 4 5 <web-app> 6 7 <listener> 8 <listener-class> 9 org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 10 </listener-class> 11 </listener> 12 13 <servlet> 14 <servlet-name>Resteasy</servlet-name> 15 <servlet-class> 16 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 17 </servlet-class> 18 </servlet> 19 20 <servlet-mapping> 21 <servlet-name>Resteasy</servlet-name> 22 <url-pattern>/*</url-pattern> 23 </servlet-mapping> 24 25 </web-app>
这是最基础的配置方式,这里看到没有<context-param>的部分,对于每一种启动RestEasy服务的方式所配置的这部分内容不同,所以这里没有写。
测试用的两个暴露地址的类。
一个是MyResource.java 一个是ParamTest.java .
package com.personnal.examples; import javax.ws.rs.*; /** * @author <a href="mailto:[email protected]">Bill Burke</a> * @version $Revision: 1 $ */ @Path("/resource") public class MyResource { private static int count = 0; @GET @Path("liu") public String lui(){ return "<html>You find me!</html>"; } @GET @Path("query") public String mm(@QueryParam("p") int p) { return String.valueOf(p); } @GET @Path("stu") public String nn(@QueryParam("p") Student s) { return s.toString(); } }
package com.personnal.examples; import javax.ws.rs.*; /** * @author <a href="mailto:[email protected]">Bill Burke</a> * @version $Revision: 1 $ */ @Path("/resource") public class MyResource { private static int count = 0; @GET @Path("liu") public String lui(){ return "<html>You find me!</html>"; } @GET @Path("query") public String mm(@QueryParam("p") int p) { return String.valueOf(p); } @GET @Path("stu") public String nn(@QueryParam("p") Student s) { return s.toString(); } }
还有一个用于测试变量String转Pojo类的一个类Studeng.java。
package com.personnal.examples; public class Student { private String name ; public Student(String s) { name =s ; } @Override public String toString() { return name; } }
都很简单对不对?easy quick start 。没有杂质最好了,看懂了最基础的东西才可以去看深入的东西吗。能写出来hello world ,才能根据Hello world代码去研究深入的内容。
二 、 resteasy.scan 启动
需要在web.xml里面加入这样的context-param
<context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param>
它的作用就是去自动扫描所有可以当成restful的类的。
然后就可以启动我们的Tomcat,我用的是Tomcat8.0版本。启动的端口是9095。
你可以打开浏览器输入以下的网址看一下效果。
http://localhost:9095/resource/liu
http://localhost:9095/resource/stu?p=your%20name
http://localhost:9095/resource/query?p=123
http://localhost:9095/resource/liu/yuwei
回头浏览以下代码,应该明白我想表达的意思。
三 、resteasy.resources
这个就是制定特定的类,用来当做Restful类的一种方式。
需要在web.xml里面加入这样的context-param ,不同的类之间用逗号间隔。
<context-param> <param-name>resteasy.resources</param-name> <param-value>com.personnal.examples.MyResource,com.personnal.examples.ParamTest</param-value> </context-param>
还是去查看一下前文提到过的那几个网址。
四 、javax.ws.rs.core.Application
这个相对有点复杂,我们先不考虑异步,单例等等模式,先把这个方式启动代码实现。
首先写一个类,继承自Application,重写其中的getclasses方法。
package com.personnal.examples; import javax.ws.rs.core.Application; import java.util.HashSet; import java.util.Set; public class RestEasyApplication extends Application{ @Override public Set<Class<?>> getClasses() { Set<Class<?>> set = new HashSet<>(); set.add(MyResource.class); set.add(ParamTest.class); return set; } }
其实就是把我们要当成RestFul借口的类放到一个Set里面,然后在web.xml里面制定到这个Application就OK了。
<context-param> <param-name>javax.ws.rs.core.Application</param-name> <param-value>com.personnal.examples.RestEasyApplication</param-value> </context-param>
怎么样,你们实现QuickStart了吗?