我正在编写一个 Web 服务,使用 Jersey 2.17 和 Tomcat 8。
在 web.xml 中,当我将 url 模式更改为 /* 时,我可以访问 web 服务并获得响应。但是,当我将 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 或过滤器映射。
<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。
所以基本上我不想覆盖任何已经存在的映射。