【发布时间】: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>
不幸的是,<url-pattern>/</url-pattern> 似乎没有做我需要它做的事情。而不是只处理“/” URL,it is special-cased, and functions as the "default mapping",而是处理所有未被其他 URL 模式捕获的请求。
在这种特殊情况下,default servlet 的<url-pattern>/*</url-pattern> 处理所有 URL。对“/”的请求以 404 的形式出现,并且无论发出什么请求,index servlet 都不会被调用。
有没有办法将“/” URL 以及仅那个 URL 显式映射到特定的 servlet?
【问题讨论】:
-
不,这会产生一个无论我请求什么都会返回 404 错误的网站。
-
不。清除整个
web.xml。反正已经解决了,见下文。