当url-pattern为/ *时,Jersey Servlet会查找资源但在url-pattern为/时无法找到资源

时间:2016-03-01 09:38:06

标签: web-services servlets jersey jersey-2.0 servlet-mapping

我正在使用Jersey 2.17和Tomcat 8编写Web服务。

在web.xml中,当我将我的网址格式更改为/ *时,我能够点击网络服务并获得响应。 但是当我将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之前运行某些Filters。如果过滤器失败,则不应该继续调用servlet。

所以基本上我不想覆盖已经存在的任何映射。

1 个答案:

答案 0 :(得分:0)

尝试在filter中使用servlet代替web.xml -

<filter-mapping>
    <filter-name>jersey-servlet</filter-name>
    <url-pattern>/</url-pattern>
</filter-mapping>