SpringMVC项目启动后无法访问index.jsp等静态页面,报404Not Found。其中一个可能的原因是被web.xml中配置的dispatcherServlet拦截处理.jsp或.html,但是又未实现相关功能导致。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!--如果想访问.jsp等静态页面,需配置为 / -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
检查下是否配置为/*
,由DispatcherServlet拦截了.jsp和.html等静态资源的请求。可以将配置为/
。
/
:表示匹配所有请求,其中包含除.jsp和.jspx外的所有后缀。
/*
:会覆盖其他所有的servlet,包括servlet容器提供的所有servlet。即无论你发出什么请求,都会在该servlet拦截处理,当然也包括.jsp和.html等静态资源。
/**
:什么请求都不能拦截处理,相当于没有设置。
因篇幅问题不能全部显示,请点此查看更多更全内容