SpringMVC工作流程

SpringMVC 总结

加依赖 spring-webmvc和javax.servlet-jsp,jsp-api

SpringMVC 工作流程

在这里插入图片描述

前端发送请求非中央控制器(DispatcherServlet),请求转发给处理映射器(HandlerMapping),处理映射器将查找到当前请求由哪个处理器去处理以及会经过哪些拦截器,将找到的处理器和拦截器封装为过滤链(HandlerExecutionChain)返回给中央控制器,在将过滤链转发给处理适配器(HandlerAdapter),执行处理器的方法,执行过滤链,完成请求参数封装和json格式转换最终返回一个ModelandView 给中央控制器,在将modelandview发给视图解析器(ViewResovler)解析,具体是中央控制器的render方法,返回一个view对象,再将view对象发给View,调用View中的render的方法完成页面的渲染,将渲染结果返回游览器

处理映射器 HandlerMapping

配置处理器映射器 HandlerMapping

处理器映射器的作用,就是根据当前请求的 URL 地址,找到对应的 Controller

例如发送一个请求 http://localhost:8080/web01/hello,处理器映射器自动识别出请求路径是 /hello,然后据此找到这个请求应该由哪一个 controller 来处理

BeanNameUrlHandlerMapping 表示根据 bean 的名称来映射请求路径,即如果请求的地址是 /hello,那么 SpringMVC 就会自动去查找一个名为 /hello 的 bean 去处理当前请求。

处理适配器 HandlerAdapter

在前面的步骤中,我们已经找到了当前请求应该由哪个 controller 来处理。接下来就是去调用 controller 中的方法,具体的调用就要通过 HandlerAdapter 来调用。
由于 controller 有很多种不同的定义方式,不同的定义方式最终定义出来的 controller 它的调用方式也不同,就导致不同的 controller 执行的方式不一样,通过 HandlerAdapter 可以自动适配不同 controller 的调用。

即,你怎么定义 controller,就要提供一个对应的 handlerAdapter

如果 controller 的定义是通过实现 HttpRequestHandler 接口来做的,那么这个 controller 的调用就需要通过HttpRequestHandlerAdapter 来实现。

视图解析器中的 prefix+suffix+代码中的视图名成,组成了完整的视图路径。

中央控制器 DispatcherServlet 是 SpringMVC 的大脑
mvc架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZWgqtgX-1667378436364)(C:\Users\谢顺\AppData\Roaming\Typora\typora-user-images\image-20220705192532720.png)]

拦截器

和过滤器的区别:

  • 执行时机:拦截器晚于过滤器。
  • 拦截器是一种 AOP 风格的过滤器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值