Java servlet如何处理以“/”结尾的URL?

时间:2016-02-27 03:10:15

标签: java spring spring-mvc servlets

通常,这两个请求:

localhost:8080/test
localhost:8080/test/

没有区别。

但是,当我添加servlet-mapping配置时:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping> 

然后

localhost:8080/test/

不起作用,它会返回 404 错误,我不明白我添加了这样的配置:

<servlet-mapping>
    <servlet-name>rest</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>rest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/rest-servlet.xml,
            /WEB-INF/interceptor-servlet.xml,
            /WEB-INF/controller-servlet.xml,
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

那么,为什么请求不会转到这个servlet,*.html中的魔力是什么?像*.txt*.jpeg这样的其他人不会导致此问题。

1 个答案:

答案 0 :(得分:0)

除去

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>*.html</url-pattern>
</servlet-mapping> 

<servlet-mapping>
    <servlet-name>rest</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

让Spring区分rest和html请求。