【问题标题】:Override the "default servlet" behaviour for URL pattern "/" in web.xml覆盖 web.xml 中 URL 模式“/”的“默认 servlet”行为
【发布时间】:2015-10-25 18:10:06
【问题描述】:

我有一个特定的 JSP,我想在我的网站的根页面(URL“/”)提供它。所有其他请求都应静态提供。所以很自然地我像这样配置了我的web.xml

<servlet>
  <servlet-name>index</servlet-name>
  <jsp-file>/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
  <servlet-name>index</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

不幸的是,&lt;url-pattern&gt;/&lt;/url-pattern&gt; 似乎没有做我需要它做的事情。而不是只处理“/” URL,it is special-cased, and functions as the "default mapping",而是处理所有未被其他 URL 模式捕获的请求

在这种特殊情况下,default servlet 的&lt;url-pattern&gt;/*&lt;/url-pattern&gt; 处理所有 URL。对“/”的请求以 404 的形式出现,并且无论发出什么请求,index servlet 都不会被调用。

有没有办法将“/” URL 以及仅那个 URL 显式映射到特定的 servlet?

【问题讨论】:

  • 不,这会产生一个无论我请求什么都会返回 404 错误的网站。
  • 不。清除整个web.xml。反正已经解决了,见下文。

标签: java jsp tomcat servlets


【解决方案1】:

使用空模式字符串匹配上下文根:

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

【讨论】:

  • 谢谢!我很难找到有关这方面的硬文件。
猜你喜欢
  • 2010-10-04
  • 1970-01-01
  • 2013-03-10
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多