【问题标题】:How does Java servlet handle a URL that ends with '/'?Java servlet 如何处理以“/”结尾的 URL?
【发布时间】:2016-06-10 11:10:40
【问题描述】:

通常,这两个请求:

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 这样的其他人不会导致这个问题。

【问题讨论】:

  • 因为“localhost:8080/test/”与“*.html”不匹配,还是其他问题?
  • 其实我想要 localhost:8080/test/ match 'rest'

标签: java spring spring-mvc servlets


【解决方案1】:

删除

<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 请求。

【讨论】:

  • 但我需要 html 请求。我的 webapps 有 ueditor 使用的静态 html 文件。
猜你喜欢
  • 1970-01-01
  • 2012-11-06
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多