1.所需要引入的依賴
一種是自己導包,一種是用內建的包
第一種,需要配置web.xml
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>2.1.0.GA</version>
<scope>compile</scope>
</dependency>
第二種,可以不用配置web.xml
<dependencies>
<dependency>
<groupId>com.paypal.springboot</groupId>
<artifactId>resteasy-spring-boot-starter</artifactId>
<version>2.3.0-RELEASE</version>
</dependency>
</dependencies>
2.web.xml配置,資源注冊資源有三種方式
手動注冊,手動指定,自動掃描
開始時,自動掃描一直無法啟動,網上查到是jdk和tomcat版本問題,用的jdk1.8和tomcat7,換成tomcat8之後,完美運作。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<display-name>Archetype Created Web Application</display-name>
<!--方法3: 使用自動Scan的模式,必須啟動ResteasyBootstrap監聽 -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!--方法3: 自動掃描結束-->
<!--方法2: 手動注冊開始-->
<!--<context-param>-->
<!--<param-name>resteasy.resources</param-name>-->
<!--<param-value>com.RestApplication</param-value>-->
<!--</context-param>-->
<!--方法2: 手動注冊結束-->
<!-- 對應<servlet-mapping>的url,必須設定prefix做初始過濾,通路例子:http://localhost:8080/wang/service/userservice/users -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/resteasy</param-value>
</context-param>
<!-- 啟動服務監聽器,初始化resteasy核心元件 -->
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<!-- url服務請求的分發控制器 -->
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<!--方法1 手動指定Application start-->
<!--<init-param>-->
<!--<param-name>javax.ws.rs.Application</param-name>-->
<!--<param-value>com.RestApplication</param-value>-->
<!--</init-param>-->
<!--方法1 手動指定Application end-->
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/resteasy/*</url-pattern>
</servlet-mapping>
</web-app>
3.配置application
package com;
import javax.ws.rs.ApplicationPath;
//import java.util.HashSet;
//import java.util.Set;
@ApplicationPath("/resteasy")//手動指定時不需要配置
public class RestApplication extends javax.ws.rs.core.Application{
// -------------- 手動指定需要自己添加資源----------------
// private Set<Object> singletons = new HashSet<Object>();
// /*在這裡增加資源類*/
// public RestApplication () {
// singletons.add(new service());
// }
// @Override
// public Set<Object> getSingletons() {
// return singletons;
// }
// -------------- 手動指定需要自己添加資源----------------
}
package com;
import org.jboss.resteasy.annotations.Form;
import javax.ws.rs.*;
@Path("/ser")
public class service {
@GET
@Path("/hello")
@Produces("application/json")
public String getHello(){
return "hello,this is a get request";
}
@GET
@Path("/{id}")
@Produces("application/json")
public String pathParam(@PathParam("id") String id){
return "pathParam is " + id;
}
@GET
@Path("/query")
@Produces("application/json")
public String queryParam(@QueryParam("name") String name){
return "queryParam is " + name;
}
@GET
@Path("/test/{id}")
@Produces("application/json")
public String test(@QueryParam("name") String name,@PathParam("id") String id){
return "queryParam is " + name + ";PathParam is " + id;
}
@GET
@Path("/login")
public String test(){
return "login.jsp";
}
@POST
@Path("/post")
@Produces("application/json")
public String post(@Form Emp emp){
return emp.getName();
}
@PUT
@Path("/put")
@Produces("application/json")
public String put(@Form Emp emp){
return emp.getName();
}
@DELETE
@Path("/remove/{id}")
@Produces("application/json")
public String remove(@PathParam("id") String id){
return id+"";
}
}
package com;
import javax.ws.rs.FormParam;
public class Emp {
@FormParam("name")
String name;
@FormParam("age")
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Emp(String name, int age) {
this.name = name;
this.age = age;
}
public Emp() {
}
@Override
public String toString() {
return "Emp{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
4.前台頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>歡迎登入</title>
</head>
<%--<script type="text/javascript" src="jquery/jquery.js"></script>--%>
<script src="jquery/jquery-1.10.2.js"></script>
<body>
welcome to you!
<button onclick="hello()">hello</button>
<button onclick="get()">hello</button>
<button onclick="post()">hello</button>
<button onclick="put()">hello</button>
<button onclick="remove()">hello</button>
<span id="span"></span>
</body>
<script>
function hello(){
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏覽器執行代碼
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏覽器執行代碼
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("span").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/resteasy/ser/hello",true);
xmlhttp.send();
}
function get(){
$.get("/resteasy/ser/hello",function(data){
debugger
alert(data);
},'text');
}
function post(){
$.post("/resteasy/ser/post",{name:'tom',age:12},function(result){
$("span").html(result);
},'text');
}
function put(){
$.ajax({
url:"/resteasy/ser/put",
type:"PUT",
// contentType:"application/json",//設定請求參數類型為json字元串
data:{name:'tom',age:12},//将json對象轉換成json字元串發送
dataType:"text",
success:function(result){
alert(result);
},
});
}
function remove(){
$.ajax({
url:"/resteasy/ser/remove/12",
type:"DELETE",
// contentType:"application/json",//設定請求參數類型為json字元串
dataType:"text",
success:function(result){
alert(result);
},
});
}
</script>
</html>
以上是第一種自己導入依賴,下面介紹第二種
<dependency>
<groupId>com.paypal.springboot</groupId>
<artifactId>resteasy-spring-boot-starter</artifactId>
<version>2.3.0-RELEASE</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
package com;
import org.springframework.stereotype.Component;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@Component
@ApplicationPath("/v1")
public class ApplicationPathImpl extends Application {
}
package com;
import org.springframework.stereotype.Component;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Component
@Path("/province")
public class ExternalFacadeImpl{
/**
* http://localhost:8080/v1/province/city/1
* @param id
* @return
*/
@Path("/city/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getCity(@PathParam("id") Long id) {
return id+"";
}
}
可以正常通路