Jersey快速入门案例

2023-05-05 19:50:48 浏览数 (2)

_01_jersey_hello

第一章 jersey基础

jersey概述

Eclipse Jersey 是一个 REST 框架,提供了 JAX-RS (JSR-370) 的实现。

JAX-RS介绍

JAX-RS是JAVAEE6引入的一个新技术。JAX-RS即JavaAPIforRESTfulWebServices,是一个Java编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了JavaSE5引入的Java标注来简化Web服务的客户端和服务端的开发和部署。

JAX-RS提供了一些注解将一个资源类,一个POJO Java类,封装为Web资源。注解包括:

  • @Path,标注资源类或者方法的相对路径
  • @GET,@PUT,@POST,@DELETE:标注方法的HTTP请求的类型。
  • @Produces:标注返回的MIME媒体类型
  • @Consumes:标注可接受请求的MIME媒体类型
  • @PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam
    • 分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。

基于JAX-RS实现的框架有Jersey,RESTEasy等。

这两个框架创建的应用可以很方便地部署到Servlet 容器中,比如Tomcat,JBoss等。

值得一提的是RESTEasy是由JBoss公司开发的,所以将用RESTEasy框架实现的应用部署到JBoss服务器上,可以实现很多额外的功能。

jersey 用户指南

Jersey 2.31 User Guide

jersey入门案例

创建maven-webapp工程添加依赖

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.byron4j</groupId>
  <artifactId>_01_jersey_hello</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <!-- servlet 依赖 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!--jersey 依赖-->
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-server</artifactId>
      <version>1.17.1</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.17.1</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-servlet</artifactId>
      <version>1.17.1</version>
    </dependency>


  </dependencies>

  <build>
    <finalName>_01_jersey_hello</finalName>
    
  </build>
</project>

web.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <servlet>
        <servlet-name>ServletContainer</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <!-- 来自于:PackagesResourceConfig.PROPERTY_PACKAGES -->
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.byron4j.rest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletContainer</servlet-name>
        <url-pattern>/rest-points/*</url-pattern>
    </servlet-mapping>
    

</web-app>

编写代码: JerseyHelloWorldService.java

代码语言:javascript复制
package org.byron4j.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/show-on-screen")
public class JerseyHelloWorldService {

    @GET
    @Path("/{message}")
    public Response getMsg(@PathParam("message") String msg){
        String str = "msg:"   msg;

        return Response.status(200).entity(str).build();
    }
}

访问测试

访问:http://localhost:8080/rest-points/show-on-screen/hello

可以看到: msg:hello

注解回顾

  • @Path("/show-on-screen"):设置路径,可以用在类、方法上
  • @GET:支持http的get请求
  • @Path("/{message}"):处理路径为/show-on-screen/*的请求,并且最后的参数值绑定到message参数上
  • @PathParam(“message”) String msg:获得路径的参数message的值,并赋值给msg

附录-JSR

  • JSR

0 人点赞