2024/11/20日 日志 关于 Filter & Listener
Filter
点击查看代码
-- Filter
--
-- ·概念:Filter 表示过滤器,是JavaWeb 三大组件(Servlet、Filter、Listener)之一
-- ·过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
-- ·过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等
--
-- Filter 快速入门
-- 1.定义类,实现 Filter接口,并重写其所有方法
-- public class FilterDemo implements Filter {
-- public void init(Filterconfig filterconfig)
-- public void doFilter(ServletRequest request···
-- public void destroy(){}
-- 2.配置Filter拦截资源的路径:在类上定义 @WebFilter 注解
-- @WebFilter("/*")
-- public class FilterDemo implements Filter {
-- 3.在doFiter方法中输出一句话,并放行
-- public void doFilter(ServletRequest request···
-- System.out.println("filter 被执行了...");
-- //液行
-- chain.doFilter(request,response);
--
-- 1.执行流程 放行后访问对应资源,资源访问完成后,还会回到Filter中吗? 会
-- 2.如果回到Filter中,是重头执行还是执行放行后的逻辑呢? 放行后逻辑
-- 执行放行前逻辑->放行->访问资源->执行放行后逻辑
--
-- 使用细节
-- Filter 拦截路径配置
-- Filter 可以根据需求,配置不同的拦截资源路径
-- @WebFilter("/*")
-- public class FilterDemo
-- 拦截具体的资源:/indexjsp:只有访问index.jsp时才会被拦截
-- 目录拦截:/user/*:访问/user下的所有资源,都会被拦截
-- 后缀名拦截:*jsp:访问后缀名为jsp的资源,都会被拦截
-- 拦截所有:/*:访问所有资源,都会被拦截
--
-- 过滤器链
-- 一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链
-- 注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序
--
Listener
点击查看代码
-- Listener
--
-- Listener
-- · 概念:Listener表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
-- · 监听器可以监听就是在application,session,request三个对象创建、销毁
-- 或者往其中添加修改删除属性时自动执行代码的功能组件
-- · Listener分类:JavaWeb中提供了8个监听器
-- 监听器分类及监听器名称 作用
-- Servletcontext监听
-- ServletcontextListener 用于对Servletcontext对象进行监听(创建、销毁)
-- ServletcontextAttributeListener 对Servletcontext对象中属性的监听(增删改属性)
-- Session监听
-- HttpSessionListener 对session对象的整体状态的监听(创建、销毁)
-- HttpSessionAttributeListener 对session对象中的属性监听(增删改属性)
-- HttpSessionBindingListener 监听对象于session的绑定和解除
-- HttpSessionActivationListener 对session数据的钝化和活化的监听
-- Request监听
-- ServletRequestListener 对Request对象进行监听(创建、销毁)
-- ServletRequestAttributeListener 对Request对象中属性的监听(增删改属性)
--
-- 例如:
-- ServletContextListener 使用
-- 1.定义类,实现ServletContextListener接囗
-- public class ContextioaderListener implements ServletContextListener {
-- /**
-- * Servletcontext对象被创建:整个web应用发布成功
-- * @param sce
-- */
-- /**
-- public void contextInitialized(ServletcontextEvent sce){}
-- /**
-- * ServletContext对象被销毁:整个web应用卸载
-- * @param sce
-- */
-- public void contextDestroyed(ServletContextEvent sce){}
-- }
-- 2.在类上添加@WebListener 注解
--