SpringMvc 流程

核心组件介绍

  1. 前端控制器(DisatcherServlet)
  2. 处理器映射器(HandlerMapping)
  3. 处理器(Handler)
  4. 处理器适配器(HandlerAdapter)
  5. 视图解析器(ViewResovler)

组件内容简单介绍

1.DispatcherServlet 是 SpringMVC统一的入口,所有的请求都通过它。DispatcherServlet 是前端控制器,配置在web.xml文件中。

2.Handler的声明方式有以下几种:Controller接口,HttpRequestHandler,@RequestMapping、Servlet
不同的请求使用不同的实现方式: @RequestMapping定义的Handler,用的是RequestMappingHandlerMapping,其他用的是BeanNameUrlHandlerMapping,静态资源的请求,用的是SimpleUrlHandlerMapping。

3.当 Spring 容器发现一个方法用@RequestMapping注解标注的时候,就用RequestMappingHandlerMapping这个类去实例化,当发现一个类实现了org.springframework.web.servlet.mvc.Controller这个接口的时候,就用BeanNameUrlHandlerMapping去实例化,然后将所有请求放在一个Map里,用请求路径(比如:/index)和对应的Handler做映射处理,这样是不是更好理解。

4.HandlerMapping的作用:主要是根据request请求匹配/映射上能够处理当前request的Handler.

5.HandlerAdapter的作用:因为Spring MVC中的Handler可以有多种实现形式,但是Servlet需要的处理方法的结构却是固定的,都是以request和response作为方法入参,那么如何让固定参数的Servlet处理方法调用灵活的Handler来进行处理呢?这就需要HandlerAdapter来做适配。

6.为什么需要HandlerAdapter?:
Spring MVC的Handler(Controller接口,HttpRequestHandler,@RequestMapping、Servlet)有多种表现形式,不同的Handler,处理请求的方式是不一样的,注解@RequestMapping方式使用的是用方法处理请求,而实现Controller接口和HttpRequestHandler接口方式使用的是一个类,而适配器模式就能模糊掉具体的实现,从而就能提供统一访问接口,所以这地方就要使用适配器了。

整体的流程图如下所示:

在这里插入图片描述

步骤总结:
1、用户发送请求到前端控制器(DispatcherServlet);
2、前端控制器调用处理器映射器(HandlerMapping)去查找具体的处理器(Handler);
3、处理器映射器找到处理器或拦截器后向前端控制器返回执行链(HandlerExecutionChain);
4、前端控制器调用处理器适配器(HandlerAdapter)去执行处理器(Handler);
5、处理器适配器执行处理器Handler(Controller);
6、处理器执行完业务流程后向适配器返回ModelAndView;
7、适配器向前端控制器返回ModelAndView;
8、前端控制器将ModelAndView交给视图解析器(ViewResolver)去视图解析;
9、视图解析器向前端控制器返回解析后的视图View;
10、前端控制器对视图进行渲染产生视图如html;
11、前端控制器将产生的视图html通过http返回给前端用户;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值