java p41——Filter过滤器
javaweb/day07|day08
- Filter过滤器
- 使用步骤
- 要点
- FilterChain
- 多个过滤器顺序
- FilterConfig获得初始化参数
- 功能-作用
- 案例——自动登录实现
- 案例——装饰者模式——解决乱码
- Listener
- 使用
- 作用
- 对象感知监听器
Filter过滤器
生命周期:
服务器启动创建
服务器关闭销毁
使用步骤
- 自定义类, 实现Filter接口
- 重点实现doFilter方法
- 注册Filter @WebFilter web.xml-配置]
- doFilter中, 直接响应, 要么放行 chain.doFilter
- 测试: 发送的是Servlet请求
@WebFilter("/MyServlet01")//url-pattern代表要过滤的请求资源路径
public class MyFilterA implements Filter {public void destroy() {System.out.println("FilterA destroy");}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {System.out.println("MyFilterA before");chain.doFilter(req, resp);System.out.println("MyFilterA after");}public void init(FilterConfig config) throws ServletException {System.out.println("FilterA init");}
}
要点
FilterChain
FilterChain: 过滤器链, 由filter-mapping将过滤器连接串起来的
doFilter() -> 执行下一个过滤器, 本质是递归
@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
多个过滤器顺序
按照web.xml文件中的<filter-mapping>标签顺序
例DAC Demo01Servlet进来了 CAD
FilterConfig获得初始化参数
<filter><filter-name>MyFilterC</filter-name><filter-class>a_filter.MyFilterC</filter-class><init-param>//初始化参数值<param-name>driver</param-name><param-value>com.mysql.cj.jdbc.Driver</param-value></init-param></filter><filter-mapping><filter-name>MyFilterC</filter-name><url-pattern>/Demo01Servlet</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping>
服务器一启动就会执行
public class MyFilterC implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 获得Filter的初始化参数String driver = filterConfig.getInitParameter("driver");System.out.println(driver);}
servlet中初始化参数
@WebServlet(value = "/Demo01Servlet",initParams =@WebInitParam(name="location", value="db.properties"))
public class Demo01Servlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String location = getServletConfig().getInitParameter("location");System.out.println(location);System.out.println("Demo01Servlet进来了");MyFilterA before
db.properties
Demo01Servlet进来了
MyFilterA after
功能-作用
案例——自动登录实现
day07/com.zzxx. autoLogin
案例——装饰者模式——解决乱码
Listener
监听某个对象的的状态变化的组件。
监听三大域对象:
使用
- 自定义类实现Listener接口
- 着重实现方法
- 注册
重点:ServletContextListener
能监测到服务器的开启和关闭
@WebListener//注册
public class MyServletContextListener implements ServletContextListener {// 在ServletContext对象创建时调用@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("application 创建了");}// 检测到ServletContext对象的销毁,并且调用该方法@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("application 销毁了");}
}
作用
- 初始化的工作:初始化对象、初始化数据 ---- 加载数据库驱动、连接池的初始化
- 加载一些初始化的配置文件 — spring的配置文件
- 任务调度----定时器----Timer/TimerTask
对象感知监听器
1.将对象存储在session中和将对象从session中移除
2.session对象的钝化, 活化
在服务器关闭时, session没有消失, 持久化在磁盘上
tomcat/work/Catalina/localhost/…/web08/SESSIONS.ser
将session数据持久化到磁盘上 -> session钝化
将磁盘上的session文件恢复到内存中 -> session活化
String name -> 可以保存在磁盘上
User user -> 不能保存在磁盘上, 不能序列化,
需要实现Serializable接口
设置session钝化时间:
<Context docBase="/Users/bonnie/IdeaWorks/javaweb/out/artifacts/web08_war_exploded"><!-- maxIdleSwap:session中的对象多长时间不使用就钝化 --><!-- directory:钝化后的对象的文件写到磁盘的哪个目录下,配置钝化的对象文件在work/catalina/localhost/钝化文件 --><Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"><Store className="org.apache.catalina.session.FileStore" directory="bonnie" /></Manager></Context>
java p41——Filter过滤器相关推荐
- java nodefilter类,Java Servlet Filter过滤器概述
Java Servlet Filter过滤器概述 Filter是Servlet的过滤器,是Servlet 2.3规范中新增加的一个功能,主要用于完成一些通用的操作,如编码的过滤.判断用户的登录状态等. ...
- [JAVA EE] Filter过滤器
Filter过滤器 ◼ 过滤器(Filter)可以动态地拦截请求和响应. ◼ 应用场景:过滤敏感词汇.防止SQL注入.设置字符编码.进行URL级 别的权限访问控制.压缩响应信息等. 启动文件DemoA ...
- java 过滤器 中文_java中Filter过滤器解决中文乱码办法
java中Filter过滤器解决中文乱码办法 发布时间:2020-04-07 10:19:09 来源:亿速云 阅读:16 作者:小新 这篇文章主要为大家详细介绍了java中Filter过滤器解决中文乱 ...
- Java web—Servlet过滤器(Filter)
前言: 过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...
- java filter教程_Java Web Filter 过滤器学习教程(推荐)
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- java后端通过Filter过滤器解决跨域问题
此方案只需服务端的代码修改 因为现在要前后端分离开发,那必不可免的会出现跨域问题,以下是自己实际测试过的有效代码: 步骤: 一.在 web.xml文件中添加 <!-- 2019-01-15 解决 ...
- filter过滤器_Java过滤器Filter讲解(Java基础)
Java过滤器Filter讲解(Java基础) 双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧. 超能就在这里 ...
- Java三大器之过滤器(Filter)的工作原理和代码演示
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...
- Filter 过滤器和 Listener 监听器,java面试必问底层
一.Filter 过滤器 1.概述 2.开发步骤 3.过滤器执行流程 4.过滤器生命周期 5.过滤器配置问题 6.过滤器链(配置多个过滤器) [二.Listener 监听器]( <一线大厂Jav ...
最新文章
- JQuery笔记(一)
- CTF Geek Challenge——第十一届极客大挑战Pwm Write Up
- Java资源大全中文版(Awesome最新版)(转载)
- 《CMOS集成电路后端设计与实战》——第2章 集成电路后端设计方法
- Bootloader - main system - Recovery的三角关系【转】
- 《撬动地球的Google》——Google的第一桶金(转载)
- IT 程序员、软件工程师值得考的证书有哪些?有什么证书可以考?
- MIPS汇编程序设计实验
- 计算机文件丢失不能正常启动,电脑说文件丢失或损坏开不了机怎么办?
- Glassfish的安装与使用
- CNN——残差网络实现
- 解决win10使用电池时自动调节亮度问题
- 有声音显示音频服务器,Win7右下角声音图标显示音频服务未运行的解决方法小结...
- 1小时、1天、1个月、一年的时间戳
- JAVA之输入行数打印等腰三角形
- howler.js_Howler.js可能是周围最好JavaScript音频库
- h3c交换机重启_h3c交换机怎么恢复出厂设置
- 西门子s7协议 android,工控协议 | 西门子S7协议学习分享
- 听说这10道大数据面试题把 98% 的求职者拒之BAT大厂门外(附解题方法)
- JdbcTemplate查询与批量更新