IntelliJ上創建Tomcat + Jersey 工程

REST以其簡潔的模式被越來越多的web服務採用和實現,並出現了很多框架,Jersey是其中優秀代表。
Jersey擴展了JAX-RS 參考實現, 提供了更多的特性和工具, 可以進一步地簡化 RESTful service 和 client 開發。儘管相對年輕,但已經是一個產品級的 RESTful service 和 client 框架。
需要做一個RESTful架構的web服務,結構爲IntelliJ + Tomcat + Maven + Jersey。(注:這裏的Intellij需要用 Ultimate版本)

1、新建項目

使用Intellij新建工程,選擇Java Enterprise=>RESTful Web Service,下邊的Libraries選擇Setup Library Later,方便後邊我們用Maven管理Jersey包。如圖:

新建項目

2、添加框架支持

這裏我們要添加web applicationMaven的支持。在項目名稱上右鍵=》Add Frameworks Support,選中Web ApplicationMaven,前者會添加web文件夾,裏邊包括web-infweb.xml,後者會添加pom.xml
此時項目目錄看着應該是這個樣子的,在pom.xml中修改自己的groupID
添加框架支持

3、配置Tomcat服務

Run=》Run...=》Edit Configurations對Tomcat進行配置,默認應該已經有一個,沒有的話自己添加。
如果沒有特殊需求的話,這裏只需要改一個warning,根據下方提示Fix部署的問題,可以保持默認直接apply,然後運行Tomcat就可以了。
Tomcat配置

此時打開的http://localhost:8080/頁面是空的,編輯一下index.jsp,裏邊隨便添點東西,就可以顯示出來了。

3、添加REST環境支持

修改pom.xml文件,添加jersey的依賴。找了下,新版的release是2.23。可以在這裏找,可以直接複製粘貼。

<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.containers/jersey-container-servlet -->
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.23</version>
</dependency>

完成後會自動下載對應的依賴,如果沒有開啓自動導入,用View=》Tool Windows=》Maven Projects打開Maven試圖,compile一下就行了。

接下來需要把項目依賴的lib發佈到WEB-INFO/lib下,選擇File=》Project Structure...,然後按照下圖所示操作,全選包,Put into /WEB-INF/lib,然後apply即可。
這裏寫圖片描述

4、添加測試

(1)在src/main/java下新建一個Java文件,這裏放在com.test包裏。

@Path("hello")
public class HelloJsersy {
    @GET
    @Produces("text/plain")
    public String getString(){
        return "hello jersey";
    }

    @GET
    @Path("{username}")
    @Produces("text/plain")
    public String getParam(@PathParam("username")String username){
        return "hello  "+username;
    }
}

第一個函數getString()沒有再指定@Path,直接響應hello,訪問頁面時將返回字符串hello jersey;第二個函數getParam()指定了@Path,響應hello/{username},其中{username}爲地址傳過來的參數。例如使用hello/tom訪問就返回字符串hello tom

(2)修改web.xml文件
這裏是添加jersey的處理,添加以下內容:

<servlet>
        <servlet-name>JAX-RS Servlet</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.test</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>JAX-RS Servlet</servlet-name>
        <url-pattern>/test/*</url-pattern>
    </servlet-mapping>

這裏的<param-value>com.test</param-value>就是我們最終提供RESTful服務代碼所在的包名。

OK,現在重啓一下Tomcat,訪問http://localhost:8080/test/hello就可以看到hello jersey

中文亂碼處理

以上雖然搭建好環境,但是用瀏覽器訪問的時候中文顯示亂碼。
(1)修改Tomcat默認編碼
修改Tomcat目錄下conf/server.xml文件

<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
……
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

給其中的Connector添加上utf8編碼URIEncoding="UTF-8",最後類似於:

<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"  URIEncoding="UTF-8"/>
……
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  URIEncoding="UTF-8"/>

重啓Tomcat,即可正常顯示頁面中的中文;
(2)爲Jersey指定編碼
這個也很簡單,在@Produces裏指定就好了,類似於:

@Produces("application/json;charset=utf8")

OK!

發佈了110 篇原創文章 · 獲贊 19 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章