【题记】因为很菜,所以弄出了诸多问题,因为很菜,所以将该问题记载。 下面这个问题是我在搭建SpringMVC环境中遇到的最棘手,解决最久的问题。整整折腾了两天,红着眼睛调调试试到凌晨一两点。
【org.springframework.web.servlet.DispatcherServlet noHandlerFound
No mapping found for HTTP request with URI [/mvc/WEB-INF/view/Welcome.jsp] in DispatcherServlet with name 'rest'】
百度、google也找到了不少同类型问题,文献如下:
[1]spring的困惑--org.springframework.web.servlet.DispatcherServlet
[2]org.springframework.web.servlet.DispatcherServlet noHandlerFound
[3]spring MVC的困惑--url-pattern的/和/*有区别
如果幸运,按照上面的提示解决问题,那么说明导致该问题的原因是Servlet的路径没用配置正确。至于为何用/和/*就导致不正确呢,上面的文献[3]末尾有解释。如果还想知道更细节、更本质的解释,可以百度、google关键字【web.xml 配置 url-pattern 通配符】等。这里有一篇文献不错的文献:
[4]java的web.xml中配置
如果很不幸,按照上面的方法修改问题依旧,那就说明不是Servlet路径的问题了。而是没有找到对应的Servlet类了。为何会没有对应的Servlet呢?如果你和我一样是菜鸟,而且利用百度、google搜索关键字【Spring MVC 环境 搭建】找到了一系列文章,然后按上面的步骤操作,出现了这个问题。那么,绝大部分可能是因为没有指定WEB工程的Build Path导致。由于,有些版本的ECLIPSE默认没有将WEB工程的CLASSPATH设置为WEB-INFO/classes,所以编译的Serlvet类就不在该路径下。而tomcat的web工程部署默认在该路径下寻找Servlet类,因而即使web.xml中正确配置了url-pattern也将出现上述错误。将Build Path修改后,问题解决。
我这里做总结一下,出现这种错误是大部分是因为/和/*的原因 但是有意思我没有出现以上的错误,因为我写错了扫描组件中 base-package 的包路径。