我是Web服务的新手,我正在尝试使用RESTFul webservices。 我试图从ajax将参数传递给Java中的RESTFul Web服务器。 这就是我做的事情
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="add">
Add : <input type="text" name="name" id="name">
<input type="submit" id="submitAdd">
</div>
</body>
<script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js"></script>
<script>
$(document).ready(function ()) {
$("#submitAdd").click(function() {
var data = { name : $("#name").val() };
$.ajax({
type: "GET",
url: "http://localhost:8080/Example/Rest/controller/return",
data: data,
dataType : "json",
success : function(rdata) {
}
});
})
})
</script>
</html>
Controller.java
package com.controller;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/controller")
public class Controller {
@GET
@Path("/return")
@Consumes("application/json")
public void add(String msg) {
System.out.println("name "+ msg);
}
}
Web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>StockMonitor</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Example</servlet-name>
<servlet-class>com.sun.jersey.server.impl.container.servlet.ServletAdaptor</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.controller</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Example</servlet-name>
<url-pattern>/Rest/*</url-pattern>
</servlet-mapping>
</web-app>
这是文件结构
Example
src
->com.controller
->Controller.java
WebContent
->META_INF
->WEB-INF
->index.html
我正在使用的罐子是 -
来自Jersey JAX-RS 2.0 RI bundle
的所有广告
https://jersey.java.net/download.html
当我在浏览器中输入此内容时
http://localhost:8080/Example/Rest/controller/return
我得到HTTP Status 404 Error
。
我无法解决它。谁能告诉我这是什么错误?
答案 0 :(得分:0)
您收到404因为/Rest
没有在任何路径中注册
/Example
/controller
所以你没有映射来解析/Rest
因为你的控制器绑定了/controller
URI路径
删除URL的/Rest
并更新web.xml中的servlet映射
<servlet-mapping>
<servlet-name>Example</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
或强>
将/Rest
添加到控制器路径映射
@Path("/Rest/controller")
public class Controller {
答案 1 :(得分:0)
删除add(String msg)方法上的@Path(&#34; / return&#34;)注释。您只需要从路径/ Rest / controller返回,并且是资源的终点。 @Path(&#34; / controller)注释将在资源类中搜索@GET。
package com.controller;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/controller")
@Consumes("application/json")
public class Controller {
@GET
public void add(String msg) {
System.out.println("name "+ msg);
}
}