java - 覆盖 web.xml 中 URL 模式 "default servlet"的 "/"行为

标签 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>

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

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

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

最佳答案

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

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

关于java - 覆盖 web.xml 中 URL 模式 "default servlet"的 "/"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31790627/

相关文章:

Java (JSP/Servlet) : equivalent of getServletContext() from inside a . jsp

java - 如何通过 Java EE Web 应用程序将文件存储在服务器(Web 容器)上?

java - 是否可以将所有 jar 存储在 Tomcat lib 文件夹中?

java - RabbitMQ 生产者的 REST 端点

java - Freemarker 方法不能接受对象作为参数

java - 应用程序在被 JVM 终止之前可以生成多少个线程

java - 在没有查询字符串参数的情况下重建 URL

jsp - 覆盖 c :url 的基本 url

tomcat - Groovy 帮助查找丢失的包 : com. cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials package not found, Jenkins Job DSL plugin

java - 使用 XPath 搜索时,HtmlElements 在 block 中找到 3 个元素,而不是仅 1 个