流程
springMVC的运行流程,如图所示:
1:启动工程时,系统加载web.xml
2:当用户输入一个请求时,请求被web.xml中被拦截,转到了springmvc.xml中进行处理,如下web.xml
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--若没有配置<init-param>这个标签,读取 xml 配置文件的原则:默认找的是 /WEB-INF/{servlet-
name}-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
3:此时,HandlerMapping根据不同的实现类,有着不同的规则,都是维护一个map<url,Handler>,如下所示:
<!-- 根据请求的url查找处理器,它会给dispatcherServlet返回一个处理器(Handler) -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
4:然后让HandlerAdapter去执行上面根据url找到的Handler,执行完会返回一个ModelAndView
5:最后DispatcherServlet会让viewResolver去解析这个ModelAndView最后返回给用户