覆盖 web.xml 中 URL 模式“/”的“默认 servlet”行为

qnt*_*ntm 1 java jsp tomcat servlets

我有一个特定的 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>
Run Code Online (Sandbox Code Playgroud)

不幸的是,它似乎<url-pattern>/</url-pattern>没有做我需要做的事情。它不是只处理“/”URL,而是特殊情况,并且充当“默认映射”,处理其他 URL 模式未捕获的所有请求

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

有没有办法显式地将“/”URL 映射到特定的servlet?

wer*_*ero 5

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

<servlet-mapping>
    <servlet-name>index</servlet-name>
    <url-pattern></url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)