在web.xml中经常会看到listener,filter,servlet的相关标签配置,它们分别是监听器、过滤器、容器,都是在项目启动的时候就可以进行初始化的加载动作
首先我们先识别 web.xml 中的各项标签元素的加载顺序,结论如下:
context-param(上下文参数) -> listener -> filter -> servlet
不同层次的标签元素的加载顺序并不按照标签元素的书写顺序加载
但是同级的(如两个 filter)标签元素加载顺序与书写顺序有关
注意:某些标签元素存在关联的
如:filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义
listener 用于监听 Servlet,核心接口是 ServletContextListener,继承自 EventListener。
监听客户端的请求、服务端的操作等。
通过监听器,可以触发一些操作,比如监听在线的用户的数量、监听 session 超时与否等。
<!-- Session超时检测类 -->
<listener>
<listener-class>com.mebugs.listener.HttpSessionTimeOutListener</listener-class>
</listener>
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 容器可以理解为一个服务端接受端,继承 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 服务开发。
但实际上在底层依旧使用了这些技术。
温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。