AjaxPost无法找到URL,这导致了带有注释的java类。给出错误404
我在AjaxPost无法找到URL,这导致了带有注释的java类。给出错误404,java,ajax,maven,jetty,jax-rs,Java,Ajax,Maven,Jetty,Jax Rs,我在Java脚本文件中编写了我的ajaxpost,如下所示: 其中,obj1是字符串化的JSON对象 $.ajax({ url:'./rest/input/post', type: 'POST', data:obj1, contentType: 'application/json', dataType:'json', success:function(data) { var values = JSON.stringify(d
Java脚本
文件中编写了我的ajax
post
,如下所示:
其中,obj1是字符串化的JSON
对象
$.ajax({
url:'./rest/input/post',
type: 'POST',
data:obj1,
contentType: 'application/json',
dataType:'json',
success:function(data)
{
var values = JSON.stringify(data);
alert(values);
},
},'json');
我将它传递给Java
类,如下所示:
@Path("/input")
public class InputResponse {
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Input postInputRecord(Input obj){
return obj;
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<display-name>CAD</display-name>
<servlet>
<servlet-name>Jersey Web Application</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.cad.example.response</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.cad.data.model</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
我的Web.xml
文件如下:
@Path("/input")
public class InputResponse {
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Input postInputRecord(Input obj){
return obj;
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<display-name>CAD</display-name>
<servlet>
<servlet-name>Jersey Web Application</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.cad.example.response</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.cad.data.model</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
计算机辅助设计
Jersey Web应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.cad.example.response
com.sun.jersey.config.property.packages
com.cad.data.model
1.
Jersey Web应用程序
/休息/*
这是maven
项目:
我在Jetty
服务器上运行它,同时调用url“”
但它给了我404
错误。除此之外,console中没有错误。
为什么会这样?我怎样才能解决这个问题?
非常感谢您的建议。查看Java类中的path变量/输入翻译为可能不是您想要的
您还在Java文件中两次重新声明@Path变量。一次在InputResponse类定义之前,另一次在InputResponse类本身内部 还要查看ajax调用的url值。单点斜杠是工作目录。这里有一个链接解释了./和../之间的路径差异。请看我的web.xml,我已将url模式指定为/rest/*,而对于GET ajax请求,同样的东西总体上对我来说运行良好。@lawrence thorne