📖listener、filter、servlet的加载次序

发布: 2021-10-08
热度: 39
趋势: 39
权重: 0
🎯

在web.xml中经常会看到listener,filter,servlet的相关标签配置,它们分别是监听器、过滤器、容器,都是在项目启动的时候就可以进行初始化的加载动作

加载顺序

首先我们先识别 web.xml 中的各项标签元素的加载顺序,结论如下:

context-param(上下文参数) -> listener -> filter -> servlet

不同层次的标签元素的加载顺序并不按照标签元素的书写顺序加载

但是同级的(如两个 filter)标签元素加载顺序与书写顺序有关

注意:某些标签元素存在关联的

如:filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义

listener 监听器

listener 用于监听 Servlet,核心接口是 ServletContextListener,继承自 EventListener。

监听客户端的请求、服务端的操作等。

通过监听器,可以触发一些操作,比如监听在线的用户的数量、监听 session 超时与否等。

<!-- Session超时检测类 -->
<listener>
  <listener-class>com.mebugs.listener.HttpSessionTimeOutListener</listener-class>
</listener>

filter 过滤器

filter 用于过滤到 servlet 的 request。

filter 可以改变一个 request 和修改一个 response,实现 Filter 接口。

filter 不是 servlet,不能产生 response,能够在一个 request 到达 servlet 之前预处理,也可以在离开 servlet 时处理 response。

<!-- 过滤资源请求,要求登录后才能请求页面 -->
<filter>
  <filter-name>GetUrlRequestFilter</filter-name>
  <filter-class>com.mebugs.filter.GetUrlRequestFilter</filter-class>
</filter> 
<filter-mapping>
  <filter-name>GetUrlRequestFilter</filter-name>
  <url-pattern>/mebugs/page/*</url-pattern>
</filter-mapping>

servlet 容器

servlet 容器可以理解为一个服务端接受端,继承 HttpServlet。

servlet 可以接受 request 请求,通过相应的逻辑处理,并返回 reponse,一个通俗的前后台交互层。

<!-- 秘钥一键登录鉴权 -->
<servlet> 
  <servlet-name>OneKeyLogin</servlet-name> 
  <servlet-class>com.net.sobest.login.OneKeyLoginAction</servlet-class> 
</servlet> 
<servlet-mapping> 
  <servlet-name>OneKeyLogin</servlet-name> 
  <url-pattern>/OneKey_Authenticate</url-pattern> 
</servlet-mapping>

结语

现阶段的开发进入微服务时代,大家已经习惯直接使用 SpringBoot 进行 web 服务开发。

但实际上在底层依旧使用了这些技术。

当前文章暂无讨论,留下脚印吧!
大纲
  • 加载顺序
  • listener 监听器
  • filter 过滤器
  • servlet 容器
  • 结语
提交成功,请等待审核通过后全面展示!

发表评论

昵称
邮箱
链接
签名
评论

温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。

选择头像