【Jersey】IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服務

 本文參考如下內容:html

使用Jersey實現RESTful風格的webservice(一)java

Starting out with Jersey & Apache Tomcat using IntelliJweb

 

--------------------------------------------------正文--------------------------------------------------------------apache

 

1、在IntelliJ中建立新項目,選擇Java Enterprise -> RESTful Web Service -> Setup libery later.json

 

 

2、建立完項目JerseyDemo後,對項目點擊右鍵 -> Add Frameworks Support,分別勾選Web Application和Maven。其中,web appication爲項目增長了web.xml,maven爲構建工具。windows

完成以後項目的文件結構以下:api

3、在pom.xml中加入jersey和jetty依賴:瀏覽器

<dependencies>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.19.1</version>
    </dependency>
    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty</artifactId>
        <version>6.1.25</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.19</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.19.1</version>
    </dependency>
 </dependencies>

4、在src/main/java/下建立package和類,這裏我建立了一個HelloJsersy類,代碼以下:tomcat

package com.puyangsky.example;

import javax.ws.rs.*;

//Path註解來設置url訪問路徑 @Path(
"/hello") public class HelloWorld {
   //GET註解設置接受請求類型爲GET @GET
   //Produces代表發送出去的數據類型爲text/plain
   //與Produces對應的是@Consumes,表示接受的數據類型爲text/plain
@Produces(
"text/plain") public String getString() { return "hello jersey!"; } }

接着使用Jetty建立一個服務器類StartEntity.java:服務器

 1 package com.puyangsky.example;
 2 
 3 import com.sun.jersey.api.core.PackagesResourceConfig;
 4 import com.sun.jersey.spi.container.servlet.ServletContainer;
 5 import org.mortbay.jetty.Server;
 6 import org.mortbay.jetty.servlet.Context;
 7 import org.mortbay.jetty.servlet.ServletHolder;
 8 
 9 /**
10  * Created by user01 on 2016/4/8.
11  */
12 public class StartEntity {
13     public static void main(String[] args) {
14         Server server = new Server(8090);
15         ServletHolder sh = new ServletHolder(ServletContainer.class);
16         sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", PackagesResourceConfig.class.getCanonicalName());
17         sh.setInitParameter("com.sun.jersey.config.property.packages", "com.puyangsky.example");
18         //start server
19         Context context = new Context(server, null);
20         context.addServlet(sh, "/*");
21         try {
22             server.start();
23             server.join();
24         } catch (Exception e) {
25             e.printStackTrace();
26         }
27 
28     }
29 }

紅色字體標出的第一個是端口號,能夠本身設置,第二個是須要你本身修改的,即第一個HelloJersey.java所在的包名。

ok,點擊右鍵,Run "StartEntity.main()" 

5、在瀏覽器中訪問http://localhost:8090/hello,或使用IntelliJ中的Test RESTful Web Service,結果以下:

大功告成!

 ------------------------------------------------------一些小建議------------------------------------------------

一、IntellJ的快捷鍵:

神器之因此是神器,固然有不同的地方,好比咱們想寫一個main方法,不用輸入一大串,只要輸入「psvm」,回車,搞定!

相似的還有輸出,只要輸入「souf」,右鍵。類的還有不少,本身去慢慢發現。

二、Jetty佔用了端口號沒有釋放,每次都換一個端口號很麻煩,那麼應該怎麼辦?

由於我是在windows7上作的,那麼win+R打開DOS命令行,輸入netstat -ano | findstr "8090":

最後一欄爲進程ID,pid.因此只要kill掉就ok了,接着輸入:taskkill /PID 12336 /F 

結果:

這裏由於12236已經掛了因此換了個PID,效果同樣。

 

Jersey的更多使用將在下一篇博客中繼續介紹。

相關文章
相關標籤/搜索