当出现这个错误的时候很可能是web.xml中dispatcherServlet配置的不对
原来的配置:
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
更改后的配置:
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
为什么会有这样的区别?
因为“/*”表示匹配所有,因此所有传入的路径都会被匹配到,进而交由DispatcherServlet处理,而[/myspring/WEB-INF/jsp/hello.jsp]没有对应的Controller,自然会发生报错。此时你需要<mvc:resources location="" mapping="">进行静态资源映射。
而“/”表示将DispatcherServlet作为default Servlet(默认是org.apache.catalina.servlets.DefaultServlet),所有其他路径映射未匹配情况下才会交由它处理。而由于隐式映射的关系,使得 .jsp 扩展名被映射到静态资源进而被执行。
查了一下午才知道。