SpringMVC架构及执行流程


一、请求处理流程图

二、执行流程说明

1  用户发送请求至前端控制器DispatcherServlet

2  DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3  处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet

4  DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5  执行处理器(Controller,也叫后端控制器)

6  Controller执行完成返回ModelAndView

7  HandlerAdaptercontroller执行结果ModelAndView返回给DispatcherServlet

8  DispatcherServletModelAndView传给ViewReslover视图解析器

9  ViewReslover解析后返回具体View

10         DispatcherServletView进行渲染视图(即将模型数据填充至视图中)。

11         DispatcherServlet响应用户

三、组件说明

DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的cdispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

Handler:处理器

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler

HandlAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

View Resolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

View:视图

springmvc框架提供了很多的View视图类型的支持,包括:jstlViewfreemarkerViewpdfView等。我们最常用的视图就是jsp

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。

需要用户编写的组件有handlerview

 

四、Spring MVC配置

1、  组件扫描器:使用组件扫描器省去在spring容器配置每个controller类,使用<context:component-scan>自动扫描标记@controller的配置如下:

<context:component-scan base-package="com.jredu.controller"/>

 

2、  RequestMappingHandlerMapping:注解处理器映射器,对类中标记@RequestMapping的方法进行映射,根据RequestMapping定义的url匹配RequestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method

 <!--注解映射器 -->

    <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

注解描述:

@RequestMapping:定义请求url到处理器功能方法的映射

3、  RequestMappingHandlerAdapter:注解式处理器适配器,对标记@RequestMapping的方法进行适配。

spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用RequestMappingHandlerAdapter完成注解式处理器适配。

<!--注解适配器 -->

    <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

         4<mvc:annotation-driven>:spring mvc 使用<mvc:annotation-driven>自动加载RequestMappingHandlerMappingRequestMappingHandlerAdapter,可用在spring-mvc.xml配置文件总使用<mvc:annotiation-driven>替代注解处理器和适配器的配置。

         5、视图解析器

        

<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

         <propertyname="viewClass"

              value="org.springframework.web.servlet.view.JstlView"/>

         <propertyname="prefix"value="/WEB-INF/pages/"/>

         <propertyname="suffix"value=".jsp"/>

     </bean>

InternalResourceViewResolver:支持JSP视图解析

viewClassJstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar 包。此属性可以不设置,默认为JstlView

prefix suffix:查找视图页面的前缀和后缀,最终视图的址为:

前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,则最终返回的jsp视图地址“WEB-INF/pages/list.jsp

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值