流程

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最后返回给用户