Filter, Listener对象
一、Filter
1、在请求所有Servlet之前触发、类似于保安角色
2、一般用来与做全局配置、给所有Servlet初始化配置(编码、跨域、权限)
二、Filter生命周期
1、init() 初始化方法、只执行一次
2、doFilter() 过滤方法、匹配一次执行一次、
3、destroy() 销毁方法、只执行一次
4、doFilter()的chain.doFilter(res, resp);方法属于放行、如果没有这个方法则不再往下执行
三、Filter的匹配规则、Servlet也同样适用
路由规则 | 作用 |
---|---|
1、/user | 精确匹配 |
2、/user/* | 路径匹配(/user/所有路径)无论多少级目录 |
3、*.action | 后缀名匹配 |
4、/ | 缺省匹配 |
1、匹配优先级 1>2>3>4
2、路径匹配和扩展名匹配无法同时设置
3、/*用在Filter、用来匹配所有资源;
4、/ *用在Servlet用来匹配所有资源内容(注意优先级)、但不包含静态资源,很恶劣;/用在Servlet、覆盖默认DefalutServlet、静态资源无法访问
四、Listener
用来监听Application、Session、Request三个对象的生命周期和属性变化
监听接口和方法 | 作用 |
---|---|
HttpSessionListener(sessionCreated、sessionDestroyed) | 监听Session对象创建和销毁 |
HttpSessionAttributeListener(attributeAdded、attributeRemoved、attributeReplaced) | 监听Session属性的添加、删除、替换 |
ServletContextListener(ServletContextEvent、contextDestroyed) | 监听Application对象的创建和销毁 |
ServletContextAttributeListener(attributeAdded、attributeRemoved、attributeReplaced) | 监听Application属性的添加、删除、替换 |
ServletRequestListener(requestInitialized、requestDestroyed) | 监听Request对象创建和销毁 |
ServletRequestAttributeListener(attributeAdded、attributeRemoved、attributeReplaced) | 监听Request属性的添加、删除、替换 |