Spring MVC执行流程

1.构成

DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图。

MVC三层架构:

M : 表示model,即模型,对应数据库;

V : 表示View,即视图,对应前端页面如JSP;

C : 表示Controller,即控制层,对应servlet请求映射。

2.执行原理

1.服务器收到请求后,servlet会将所有的请求都交给前端控制器(DispatcherServlet)处理;

2.前端控制器(DispatcherServlet)先调用HandlerMapping(处理器映射器),handlerMapping根据请求url查找控制器(handler),

返回一个HandlerExecutionChain(处理器执行链),HandlerExecutionChain中除了控制器的信息之外,还有拦截器的信息;

3.接着将HandlerExecutionChain(处理器执行链)返回给前端控制器(DispatcherServlet),调用适配器之前会先执行前置拦截器

的代码,接着DispatcherServlet调用HandlerAdapter(适配器)执行controller层的代码内容,也就是带@Controller注解的类里面

的代码,返回一个ModelAndView(逻辑视图);注意,这里的逻辑视图还不是真正的jsp页面,因为它还没经过渲染;再一次执行后 置拦截器;

4.到这一步,DispatcherServlet就会调用ViewResolver(视图解析器)来解析ModelAndView对象,得到一个View(视图),这个视图

就是已经渲染好的jsp页面,然后把页面返回给前端之前再执行一次拦截器。

3.组件解释

1.DispatcherServlet

前端控制器,也叫中央调度器。用户发送的所有请求都会经过这个接口,由servelet调用,是用来拦截所有请求的url的入口,并根据

url地址分发到不同的controller,在web.xml中配置即可使用。

2.HandlerMapping

它的作用是解析请求连接,然后根据请求连接找到执行这个请求的类,HandlerMapping所说的handler也就是Conreoller或是Action;

也叫控制器映射器,如果未匹配到控制器会直接返回404。

3.HandlerExecutionChain

它是Handler的执行链,也叫控制器执行链,包括控制器对象handler、拦截器interceptor。所以HandlerExecutionChain提供了

getHandler、getInterceptors方法,配置文件中配置的interceptor都会加入到HandlerExecutionChain;需要注意,拦截器的列表

里面除了我们配置的拦截器外,还有一个springmvc自己维护的拦截器;

4.HandlerInterceptor

控制器的拦截器,一般都是作为扩展使用,一共三个方法:

a.preHandle() :在业务处理器处理请求之前被调用;

b.postHandle() :在业务处理器处理请求执行完成后调用,在生成视图之前执行;

c.afterCompletion():在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。

5.AOP切面编程 @Aspect

可以用来配置事物,做日志,权限验证,用户请求时做一些处理等。

@Aspect: 定义切面类,将被标识的类作为一个切面bean ​ @Pointcut:切入点,这里进行配置切入的范围,如果你只想在controller层进行切入,那就这样配置 :@Pointcut("execution(public * com.Spring.Boot.controller..(..))") ​ @Around:环绕增强 ​ @Before:前置增强 ​ @AfterReturning:后置增强—方法正常退出时执行 ​ @AfterThrowing:后置增强—方法异常执行 ​ @After:后置增强—增强anyway

6.ModelAndView

a.设置转向地址

ModelAndView mv = new ModelAndView();
​
mv.setViewName("statisticalform/popStatistics/onloadPopStatisticsList");

b.用于传递控制方法处理结果数据到结果页面,类似于request对象的setAttribute方法,用来在一个请求过程中传递处理的数据。

addObject(String key,Object value);   
 
mv.addObject("list", list);

7.ViewResolver

视图解析器,主要用于把一个逻辑上的视图ModelAndView解析为一个真正的view视图。

8.View

视图,作用是渲染模型数据,将模型里的数以某种形式呈现给客户端。视图对象可以是常见的JSP,还可以是Excel或PDF等形式不一样的媒体。为了实现视图模型和具体实现技术的解耦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值