问题是:
No mapping found for HTTP request with URI [/spring/WEB-INF/templates/index.jsp]
springMVC的配置如下:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/templates/"></property> <property name="suffix" value=".jsp"></property> </bean>而一开始web.xml里配置的url-pattern为"/*".
结果就是提示了
十月 31, 2016 5:41:00 下午 org.springframework.web.servlet.PageNotFound noHandlerFound
警告: No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'ijiuwen'
十月 31, 2016 5:41:08 下午 org.springframework.web.servlet.PageNotFound noHandlerFound
警告: No mapping found for HTTP request with URI [/WEB-INF/templates/index.jsp] in DispatcherServlet with name 'ijiuwen'
noHandlerFound是首页提示的,说明没有找到匹配的spring-mvc的Action类。
URI [/WEB-INF/templates/index.jsp] 这本来应该是spring-mvc里的forward的模板,但现在也把它当做了url来处理了,要进入spring的DispatcherServlet类。
解决方案是把 web.xml里的url-pattern "/*" 改为 "/"
然后,在URL匹配时,
/ 不会匹配到*.jsp,不会进入spring的DispatcherServlet类
/* 会匹配*.jsp,导致进入spring的DispatcherServlet类,然后去寻找controller,接着找不到对应的controller所以报错。
关于web.xml的url映射的小知识:
/ 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
/* 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)