環境:
IDEA Ultimate 2017.2.2 + JDK 1.8 + Jersey 2 + Maven + Tomcat 9.0.0.M22
首先創建項目:
選中Web Application(3.1)框架,勾選Create web.xml,IDE會在創建項目時創建web.xml配置文件。
tomcat集群搭建超詳細。創建項目
創建項目后右鍵選中項目,添加框架支持,選中Maven,隨即生成pom.xml文件。這里會彈出Event對話框,會有提示你Enable Auto-Import,這里我們Enable一下。
添加框架
然后開始通過maven添加依賴jar包,引用Jersey,pom.xml配置如下:
com.overc_i3.jerseydemo
Tomcat與Java Web開發技術詳解、JerseyDemo
1.0-SNAPSHOT
1.8
1.8
2.25
tomcat apache。org.glassfish.jersey.containers
jersey-container-servlet
${jersey.version}
org.glassfish.jersey.core
jersey-server
tomcat環境搭建基本流程、${jersey.version}
org.glassfish.jersey.core
jersey-client
${jersey.version}
org.glassfish.jersey.media
tomcat nginx。jersey-media-json-jackson
${jersey.version}
接下來是配置web.xml,項目里的路徑是web/WEB-INF/web.xml,這里我們將 Jersey 當做 Servlet:
jerseyServlet
org.glassfish.jersey.servlet.ServletContainer
eclipse安裝配置tomcat。jersey.config.server.provider.packages
com.overc_i3.jerseydemo
1
jerseyServlet
/*
tomcat怎么搭建博客。也可將 Jersey 當做 Servlet Filter,如下配置:
MyApplication
org.glassfish.jersey.servlet.ServletContainer
...
...
MyApplication
/myApp/*
元素內容將取決于你如何決定資源配置不同的 Jersey 資源。
最后一步配置,在輸出中把jar包全部加進去
在輸出中加入庫文件
配置完成,開始寫上API代碼,首先在src\main\java中根據之前配置的包建好對應的包,我這里配置的是com\overc_i3\jerseydemo,這里使用Json做交互,先建model:
package com.overc_i3.model;
import java.util.List;
public class ReqJson {
private String id;
private List list;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public static class ListBean {
private String maxname;
public String getMaxname() {
return maxname;
}
public void setMaxname(String maxname) {
this.maxname = maxname;
}
}
}
創建TestApi類:
package com.overc_i3.jerseydemo;
import com.overc_i3.model.ReqJson;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.List;
@Path("/")
public class TestApi {
//GET注解設置接受請求類型為GET
@GET
// 與Produces對應的是@Consumes
@Produces(MediaType.TEXT_PLAIN)
//用作測試服務啟動情況
public String getMessage() {
return "Hello world!";
}
@GET
@Consumes(MediaType.TEXT_PLAIN)//注解指定解壓方式接收數據類型
@Path("/hello")
public Response postJson(@QueryParam("name") String name) {
return Response.status(200).entity("hello "+name).build();
}
@POST
@Consumes(MediaType.APPLICATION_JSON)//注解指定解壓方式接收數據類型
@Produces(MediaType.APPLICATION_JSON)//注解指定壓縮方式返回數據類型
@Path("/postJson2")
public Response postJson2(ReqJson msg) {
ReqJson reqJson = new ReqJson();
reqJson.setId(msg.getId());
List listBeanList = new ArrayList<>();
for (int i = 0; i < msg.getList().size(); i++) {
ReqJson.ListBean listBean = new ReqJson.ListBean();
listBean.setMaxname(msg.getList().get(i).getMaxname());
listBeanList.add(listBean);
}
reqJson.setList(listBeanList);
return Response.status(200).entity(reqJson).build();
}
}
現在配置Tomcat運行一下:
點擊Run >Edit Configurations… > “+” > Tomcat Server > Local,加入Tomcat,選擇Deployment tab, 點擊 “+”, 選擇唯一的Artifact,點擊"OK"即可。
Tomcat配置
配置好之后直接運行,在瀏覽器訪問http://localhost:8080
默認地址
Get hello
到這里RESTful API已經正常運行,接下來再用Fiddler調用API(注意設置請求格式Content-Type: application/json):
調用API
查看調API結果
到這里RESTful API已經搭建完成,下面是部署的一些其它“姿勢”:
自定義 Application 子類
如果你的繼承 Application 類來提供有關根資源類的列表(getresources())和單身(getsingletons()),即你的 JAX-RS 應用模型,然后你需要注冊一個 javax.ws.rs.Application [原名] 名稱的 Servlet 或 Servlet 過濾器作為 web 應用程序的初始化參數,在 web.xml 中進行部署描述:
配置 Jersey 容器 Servlet 或者 過濾器來自定義 Application 子類
javax.ws.rs.Application
org.foo.MyApplication
Jersey 將考慮所有 Application 實現的 getClasses() 和 getSingletons() 方法的返回。
注意:JAX-RS 規范定義的配置名稱確實是 javax.ws.rs.Application 而不是 javax.ws.rs.core.Application
Jersey 掃描包
如果配置屬性無需設置,要部署應用程序只包括存儲在特定的包的資源和提供者,那么你可以指示 Jersey 自動掃描這些包,這樣就能自動注冊找到的任何資源和提供者:
配置 Jersey 的 Servlet 或者 Filter 來掃描包
jersey.config.server.provider.packages
org.foo.myresources,org.bar.otherresources
jersey.config.server.provider.scanning.recursive
false
Jersey 將會自動發現被選中的資源和提供者。你可以通過設置 >jersey.config.server.provider.scanning.recursive 屬性來決定 Jersey 是否掃描子包。默認值是 true , 即啟用遞歸掃描子包。
源碼:https://github.com/overclockingi3/JerseyDemo
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态