一:文章前言
spingMVC是一款非常优秀的MVC框架,用好它可以为我们解决许多技术问题。然而并不是所有的问题都可以通过框架来解决,有可能框架还会带来问题,遇到问题的时候不要急躁,静下心来仔细分析也许问题就会迎刃而解。
话不多说,总之,勤奋学习才是积累知识解决问题的主要途径,希望所有正在学习途中的朋友们学习愉快,天天进步。
二:映射问题,tomcat打开但是出现404
问题描述:org.springframework.web.servlet
.PageNotFound.
noHandlerFound No mapping found for HTTP request with URI [/favicon.ico] in DispatcherServlet with name 'dispatcher',红色字体很清楚的表示页面找不到,没有Control,这是为什么呢?
切入正题之前我先引入一个知识点,url-pattern的
"/"和“/*”的区别,"/*"的意思是所有的请求都会经过当前的servlet拦截,比如.jsp、/action等,然而"/"是不会对.jsp这样的请求进行拦截的。
用spingMVC的人都知道需要在web.xml文件配置dispatcherServlet。
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
如果像这样配置url-pattern配置为/*就是说在打开tomcat的时候请求jsp页面,当页面返回视图的时候,会经过当前配置的这个dispatcherServlet,然而却没有当前这个页面的Control来返回,所以就出现找不到上面红色字所表现的错误。没有控制器。
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
而如果像这样url-pattern配置为/就不会出现这样的情况了,/不会对.jsp请求进行拦截。
三:总结
在对技术的学习上,学习框架并且使用它是很重要的,但是理解它的工作原理才是更重要的。