【JavaEE进阶】拦截器(DispatcherServlet)源码简介

目录

🌴前言

🎋了解DispatcherServlet源码

🚩初始化

🚩处理请求

🍃适配器模式

🚩适配器模式的定义

🚩适配器模式角色

🚩适配器模式的实现

🚩适配器模式应用场景


🌴前言

上一篇博客我们使用了拦截器,那么拦截器是如何实现拦截的呢?

接下来我们将从源码来看一下是如何实现拦截的。

🎋了解DispatcherServlet源码

当我们启动服务,进行访问时,我们查看日志,可以看到如下情况

我们知道,Tomcat是一个Web容器,里面装了很多项目,假如有a,b,c三个项目,当Tomcat一启动,就会把这个三个项目都启动起来,假如这个三个项目中都有一个"/user/login"接口,当我们请求这个接口时,都不知道请求的是哪个项目的接口,所以会有一个servlet path,也就是说每一个项目统一加一个前缀,比如说访问a就是"/a/user/login";那么"/a"就是context path,"/user/login"就是servlet path。

由于呢当前的Tomcat中只有这一个项目,所以context path为"/",也就是在访问接口的时候,前面没有任何前缀

发送一个请求在查看日志:

当Tomcat启动之后,有⼀个核心的类DispatcherServlet,它来控制程序的执行顺序.

所有请求都会先进到DispatcherServlet,执行doDispatch调度⽅法.

如果有拦截器,会先执⾏拦截器preHandle() 方法的代码,如果 preHandle() 返回true,继续访问controller中的⽅法.

controller当中的⽅法执⾏完毕后,再回过来执行 postHandle() 和afterCompletion() ,返回给DispatcherServlet,最终给浏览器响应数据

DispatcherServlet的生命周期:init(初始化),service(业务处理),destroy(销毁)

🚩初始化

DispatcherServlet的初始化⽅法init()在其⽗类HttpServletBean中实现的

主要作⽤是加载web.xml中DispatcherServlet的配置,并调用子类的初始化.

web.xml是web项⽬的配置⽂件,⼀般的web⼯程都会⽤到web.xml来配置,主要⽤来配置 Listener,Filter,Servlet等, Spring框架从3.1版本开始⽀持Servlet3.0,并且从3.2版本开始通过配置 DispatcherServlet, 实现不再使⽤web.xml

DispatcherServlet相应继承关系如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值