天天看點

Jersey+Spring+Maven環境搭建

第一步:建立一個Maven工程。加入Jersey、Spring、Jersey+Spring的依賴包,以及内嵌的Tomcat7插件;

pom.xml檔案如圖所示:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zte.ems</groupId>
  <artifactId>jersey-spring</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>jersey-spring Maven Webapp</name>
  <url>http://maven.apache.org</url>
   <dependencies>
        <!-- Jersey  -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.8</version>
        </dependency>

        <!-- Spring 3 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

        <!-- Jersey + Spring -->
        <dependency>
            <groupId>com.sun.jersey.contribs</groupId>
            <artifactId>jersey-spring</artifactId>
            <version>1.8</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 添加jsp、servlet依賴 -->
        <!-- servlet api -->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>javax.servlet-api</artifactId>  
            <version>3.0.1</version>  
            <scope>provided</scope>  
        </dependency>  
        <!-- jstl -->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>jstl</artifactId>  
            <version>1.2</version>  
        </dependency>  
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
    </dependencies> 
  <build>
    <finalName>jersey-spring</finalName>
    <pluginManagement>
        <plugins>
            <plugin>
            <!-- 配置tomcat7插件 -->
            <groupId>org.apache.tomcat.maven</groupId>
             <artifactId>tomcat7-maven-plugin</artifactId>
              <version>2.2</version>
                <configuration>
                    <path>/jersey-spring</path>
                    <port>8080</port>
                    <uriEncoding>UTF-8</uriEncoding>
                    <url>http://localhost:8080/manager/text</url>
                    <server>tomcat7</server>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
  </build>
</project>      

第二步:Spring配置檔案的建立:很簡單,就是添加需要掃描的基本包名

spring-context.xml檔案如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <context:component-scan base-package="com.zte.ems.*" />
    <context:annotation-config/>
</beans>      

第三步:配置web.xml檔案:主要是配置spring和spring+jersey的相關資訊;

web.xml檔案如下:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!-- 配置Spring -->
  <listener>
        <listener-class>
        org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-*.xml</param-value>
    </context-param>
  <!-- 配置Jersey+Spring -->
    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.zte.ems.resource</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>      

其中  <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>這一句常常出錯,需要多注意。

第四步:寫rest資源類

在com.zte.ems.resource包下添加一個StudentResource.java類,代碼如下:

package com.zte.ems.resource;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.zte.ems.pojo.Student;
import com.zte.ems.service.StudentService;
@Component
@Path("/index")
public class StudentResource {
@Autowired
StudentService studentService;
@GET
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_ATOM_XML})
@Path("/student")
public String getStudent(){
    return "hello Student!";
    }
}      

@Component:表示這個類由Spring的IoC容器來管理,SpringMVC中使用的@Controller;

@AutoWired:表示Spring的自動裝配,将需要依賴的類直接裝配進來,當然本例子沒有使用到,具體項目中一定會需要;

@Path("/index"):該注解标記在類名之上,表示這是一個根資源;類似于SpringMVC中的@RequestMapping("/index");

@Path("/student"):該注解标記在方法名之上,表示這是一個子資源,通過/student來尋找具體方法調用;

@GET:該注解表示被标記的方法提供的是一個GET請求,同樣還有@POST、@PUT、@DELET、@PUTCH等注解;

@Produces({MediaType.xxx}):該注解表示以json或者xml檔案的形式進行輸出,類似于SpringMVC中的@ResponseBody注解;

當然還有@QueryParam,@Context等等注解,後面會專門寫一篇關于Jersey和SpringMVC之間差別和聯系的文章,敬請期待。

最後:

滑鼠放在項目名上右擊,Run As  ----> Maven build  ---->在Goals中輸入clean tomcat7:run啟動Tomcat伺服器,然後在浏覽器中輸入http://localhost:8080/jersey-spring/index/student 彈出下圖所示的成功界面:

Jersey+Spring+Maven環境搭建

到此為止,基于Jersey+Spring+Maven內建的簡單架構搭建起來了。

轉載于:https://www.cnblogs.com/wrong5566/p/5982992.html