我正在编写一个Web服务,使用Jersey 2.17和Tomcat 8。
在网络中.xml当我将 url 模式更改为/* 时,我能够点击网络服务并获得响应。但是,当我将 url 模式更改为/时,我总是收到 404 错误(找不到资源)。
不起作用
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
工作完美
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
除此之外,我的 web.xml 不包含其他 Servlet 或 Filter 映射。
<servlet>
<servlet-name>jersey-servlet</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.bandi.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
是否需要任何其他配置才能完成此操作?我不能使用/* 作为 servlet 映射,因为我需要在此 servlet 执行之前运行某些过滤器。如果过滤器失败,则不应继续调用 servlet。
所以基本上我不想覆盖任何已经存在的映射。
尝试在这样的web.xml
中使用filter
而不是servlet
-
<filter-mapping>
<filter-name>jersey-servlet</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>