我有一个特定的 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/