首先说下springmvc的组成
springmvc由以下几部分组成:
1 前端控制器:DispatcherServlet更形象的称呼是中央调度器,是整个流程控制的中心,由它调用其它组件处理用户的请求,它扮演mvc模式中c的角色。其它组件通过DispatcherServlet完成交互,所以降低了组件之间的耦合性。
2 HandlerMapping:处理器映射器(Handler映射器)负责根据用户请求找到Handler即处理器,springmvc提供了多种处理器映射器。
3 HandlerAdapter:处理器适配器(Handler适配器),通过HandlerAdapter执行Handler,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
4 HandlerIntercepter:处理器拦截器,这个组件还没有接触到。
5 Handler:处理器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
6 ViewResolver:视图解析器,负责将处理结果生成view视图。ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。springmvc框架提供了很多View视图类型,包括:jspView、freemarkView、pdfView等。
以上组件中,Handler和具体页面需要自己写,其它框架已经实现。
下面是springmvc架构图
接下来说一说springmvc的工作流程
1 用户发起request请求至DispatcherServlet
2 DispatcherServlet请求HandlerMapping查找Handler
3 HandlerMapping根据url及一些配置规则(xml配置、注解配置)查找Handler,将它返回给DispatcherServlet
4 DispatcherServlet调用HandlerAdapter执行Handler,不同HandlerAdapter执行Handler方式不同
5 HandlerAdapter执行Handler,返回ModelAndView对象,发送给DispatcherServlet。ModelAndView是springmvc的一个对象,对Model和View进行封装。
6 DispatcherServlet调用ViewResolver进行视图解析,解析后生成View对象。View对象是springmvc视图封装对象,提供了很多视图类型
7 ViewResolver解析生成View后返回给View
8 DispatcherServlet调用view的渲染视图的方法,将模型数据填充到request域
9 DispatcherServlet向用户响应结果
入门程序
入门程序连接 猛戳
其它非注解Handler映射器/适配器介绍
BeanNameUrlHandlerMapping:根据用户请求的url(XXX.action)与spring容器中bean元素的name属性匹配,查找到对应的Handler。
使用这个映射器的条件:Handler的bean的name属性值必须是访问的url相对路径。
SimpleUrlHandlerMapping:同样是根据用户请求的url进行匹配,同时它多了一个Mappings的子元素,将url与对应的handler的bean集中配置。样例如下:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/itemsTest1.action">itemController1</prop>
<prop key="/itemsTest2.action">itemController2</prop>
</props>
</property>
</bean>
key配置url路径,value是bean的id
SimpleControllerHandlerAdapter:如果使用这个适配器,Handler必须实现Controller接口。
HttpRequestHandlerAdapter:如果使用这个适配器,Handler必须实现HttpRequestHandler接口。
通过注解方式配置时,可以使用spring组件扫描加载bean,<context:component-scan base-package="xxx" />