当前位置: 首页 > 教程 > WebService >

JAX-RS示例(Jersey)

精华
小牛编辑
132浏览
2023-03-14

我们可以通过 jersey 实现创建JAX-RS示例。 为此,需要加载 jersey相关jar文件或使用Maven框架。

在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey示例。

Jersey Jar文件下载网址:https://jersey.github.io/download.html

打开Eclipse,创建一个Web工程: restfuljersey,如下图所示 -

JAX-RS创建了4个文件示例:

  • Hello.java
  • web.xml
  • index.html
  • HelloWorldClient.java

3个文件是为服务器端创建的,最后一个文件:HelloWorldClient.java 是为客户端应用程序创建的。

JAX-RS服务器代码

文件:Hello.java -

package com.yiibai.rest;  
import javax.ws.rs.GET;  
import javax.ws.rs.Path;  
import javax.ws.rs.Produces;  
import javax.ws.rs.core.MediaType;  

@Path("/hello")  
public class Hello {  
  // This method is called if HTML and XML is not requested  
  @GET  
  @Produces(MediaType.TEXT_PLAIN)  
  public String sayPlainTextHello() {  
    return "Hello Jersey Plain";  
  }  
  // This method is called if XML is requested  
  @GET  
  @Produces(MediaType.TEXT_XML)  
  public String sayXMLHello() {  
    return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";  
  }  

  // This method is called if HTML is requested  
  @GET  
  @Produces(MediaType.TEXT_HTML)  
  public String sayHtmlHello() {  
    return "<html> " + "<title>" + "Hello Jersey" + "</title>"  
        + "<body><h1>" + "Hello Jersey HTML" + "</h1></body>" + "</html> ";  
  }  
}

文件:web.xml -

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
xmlns="http://java.sun.com/xml/ns/javaee"   
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"   
id="WebApp_ID" version="3.0">  
 <servlet>  
    <servlet-name>Jersey REST Service</servlet-name>  
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>  
    <init-param>  
        <param-name>jersey.config.server.provider.packages</param-name>  
        <param-value>com.yiibai.rest</param-value>  
    </init-param>  
    <load-on-startup>1</load-on-startup>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>Jersey REST Service</servlet-name>  
    <url-pattern>/rest/*</url-pattern>  
  </servlet-mapping>  
</web-app>

文件:index.html -

<a href="rest/hello">点击这里查看</a>

现在在服务器上运行此应用程序 这里Tomcat服务器是在端口8080上运行。项目名称是restfuljersey

运行项目后,点击上面链接,将看到以下输出:

JAX-RS客户端代码

文件:ClientTest.java 在服务器应用程序内创建,也可以通过服务接口和jersey jar文件来运行其他应用程序的客户端代码。

文件:ClientTest.java -

package com.yiibai.restclient;  
import java.net.URI;  
import javax.ws.rs.client.Client;  
import javax.ws.rs.client.ClientBuilder;  
import javax.ws.rs.client.WebTarget;  
import javax.ws.rs.core.MediaType;  
import javax.ws.rs.core.UriBuilder;  
import org.glassfish.jersey.client.ClientConfig;  
public class ClientTest {  
  public static void main(String[] args) {  
    ClientConfig config = new ClientConfig();  
    Client client = ClientBuilder.newClient(config);  
    WebTarget target = client.target(getBaseURI());  
    //Now printing the server code of different media type  
    System.out.println(target.path("rest").path("hello").request().accept(MediaType.TEXT_PLAIN).get(String.class));  
    System.out.println(target.path("rest").path("hello").request().accept(MediaType.TEXT_XML).get(String.class));  
    System.out.println(target.path("rest").path("hello").request().accept(MediaType.TEXT_HTML).get(String.class));  
  }  
  private static URI getBaseURI() {  
    //here server is running on 8080 port number and project name is restfuljersey  
    return UriBuilder.fromUri("http://localhost:8080/restfuljersey").build();  
  }  
}

执行上面客户端代码,得到以下结果 -

Hello Jersey Plain
<?xml version="1.0"?><hello> Hello Jersey</hello>
<html> <title>Hello Jersey</title><body><h1>Hello Jersey HTML</h1></body></html>