配置文件web.xml
<servlet>
<servlet-name>Spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/spring/spring-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring</servlet-name>
<url-pattern>/.do</url-pattern>
</servlet-mapping>
1,从项目中的web.xml配置文件配置SpringMVC的核心servlet——-DispatcherServlet可以看出,所有以.do结尾的请求url将会被拦截。
2,请求被拦截后会被继承了org.springframework.web.servlet.handler.AbstractHandlerMapping类的处理映射类处理。常用处理映射类有
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping
beanNameUrlHandlerMapping为默认处理器。当-servlet配置文件中没有显示说明使用哪个处理器则使用该处理器。
DefaultAnnotationHandlerMapping是基于注解的。
经常开发的SpringMvc项目都是基于注解的,所以以DefaultAnnotationHandlerMapping为例
3,请求的url被DefaultAnnotationHandlerMapping处理后,找到当前已经注册入容器中的bean的被@requestMapping标注的url和handler method处理函数的关系,并关联。
4,org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 该类通过注解在方法级上的@ requestMapping结合DefaultAnnotationHandlerMapping找到逻辑处理方法。
5,SpringMVC通过HandlerAdapter实际调用处理函数,该处理函数的返回值可以是String,ModelAndView,map
6,SpringMvc的视图渲染待完成