RestEasy学习之路 Quick Start

Posted 冥地魔王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RestEasy学习之路 Quick Start相关的知识,希望对你有一定的参考价值。

关于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了吗?

 

以上是关于RestEasy学习之路 Quick Start的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn Quick Start

Expo 入门宝典 一 (Quick Start)

《Qt Quick 4小时入门》学习笔记4

《Qt Quick 4小时入门》学习笔记2

javascript 来自http://mongodb.github.io/node-mongodb-native/3.1/quick-start/quick-start/

Commons Configuration2 - Quick start guide