1

我正在编写一个 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。

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

4

1 回答 1

0

尝试使用filter而不是servletweb.xml这样 -

<filter-mapping>
    <filter-name>jersey-servlet</filter-name>
    <url-pattern>/</url-pattern>
</filter-mapping>
于 2016-03-01T10:00:08.747 回答