我在eclipse中使用Jersey配置了一个REST应用程序。
当web.xml中的路径配置为/*
时,我无法发送REST请求,但当我将其更改为/rest/*
时,我收到404 NOT FOUND错误。
服务器上没有例外。
web.xml文件如下所示:
<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.app.user</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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
以下是我在java文件中声明Path的方法
@Path("/rest/products")
public class Product {
当我访问服务器URL上的路径/ rest / products时,我收到404错误。
我错过了什么?
非常感谢帮助!
答案 0 :(得分:1)
当您将Jersey Web应用程序映射到/rest/*
时,所有请求都应该在其路径中有/rest
。您已将Product
课程映射到/rest/products
,因此整个网址应为http://localhost:port/contextRoot/rest/rest/products
。如果您不想在网址中休息两次,只需将Product
课程映射到/products
。
答案 1 :(得分:0)
您已将servlet映射到&#34; / rest / *&#34; url,即每当有一个带有....... / rest / * url的请求时,你的servlet ServletContainer都会被调用来处理它。
在您的java文件中 @Path(&#34; / rest / products&#34;)。
由于@Path中提到的路径中的正斜杠,您收到此404错误。这是因为当你使用正斜杠开始路径时,它将它作为绝对路径而不是相对路径。
因此您的最终网址不会像 / myProject / rest / products 那样结束,而是看起来像 / rest / products ,它无法找到。
因此错误。