javaweb/day07|day08

  • Filter过滤器
    • 使用步骤
    • 要点
      • FilterChain
      • 多个过滤器顺序
      • FilterConfig获得初始化参数
    • 功能-作用
    • 案例——自动登录实现
    • 案例——装饰者模式——解决乱码
  • Listener
    • 使用
    • 作用
    • 对象感知监听器

Filter过滤器

生命周期:
服务器启动创建
服务器关闭销毁

使用步骤

  1. 自定义类, 实现Filter接口
  2. 重点实现doFilter方法
  3. 注册Filter @WebFilter web.xml-配置]
  4. doFilter中, 直接响应, 要么放行 chain.doFilter
  5. 测试: 发送的是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

监听某个对象的的状态变化的组件。
监听三大域对象:

使用

  1. 自定义类实现Listener接口
  2. 着重实现方法
  3. 注册

重点: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 销毁了");}
}

作用

  1. 初始化的工作:初始化对象、初始化数据 ---- 加载数据库驱动、连接池的初始化
  2. 加载一些初始化的配置文件 — spring的配置文件
  3. 任务调度----定时器----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过滤器相关推荐

  1. java nodefilter类,Java Servlet Filter过滤器概述

    Java Servlet Filter过滤器概述 Filter是Servlet的过滤器,是Servlet 2.3规范中新增加的一个功能,主要用于完成一些通用的操作,如编码的过滤.判断用户的登录状态等. ...

  2. [JAVA EE] Filter过滤器

    Filter过滤器 ◼ 过滤器(Filter)可以动态地拦截请求和响应. ◼ 应用场景:过滤敏感词汇.防止SQL注入.设置字符编码.进行URL级 别的权限访问控制.压缩响应信息等. 启动文件DemoA ...

  3. java 过滤器 中文_java中Filter过滤器解决中文乱码办法

    java中Filter过滤器解决中文乱码办法 发布时间:2020-04-07 10:19:09 来源:亿速云 阅读:16 作者:小新 这篇文章主要为大家详细介绍了java中Filter过滤器解决中文乱 ...

  4. Java web—Servlet过滤器(Filter)

    前言:         过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...

  5. java filter教程_Java Web Filter 过滤器学习教程(推荐)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  6. java后端通过Filter过滤器解决跨域问题

    此方案只需服务端的代码修改 因为现在要前后端分离开发,那必不可免的会出现跨域问题,以下是自己实际测试过的有效代码: 步骤: 一.在 web.xml文件中添加 <!-- 2019-01-15 解决 ...

  7. filter过滤器_Java过滤器Filter讲解(Java基础)

    Java过滤器Filter讲解(Java基础)    双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧.      超能就在这里 ...

  8. Java三大器之过滤器(Filter)的工作原理和代码演示

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...

  9. Filter 过滤器和 Listener 监听器,java面试必问底层

    一.Filter 过滤器 1.概述 2.开发步骤 3.过滤器执行流程 4.过滤器生命周期 5.过滤器配置问题 6.过滤器链(配置多个过滤器) [二.Listener 监听器]( <一线大厂Jav ...

最新文章

  1. JQuery笔记(一)
  2. CTF Geek Challenge——第十一届极客大挑战Pwm Write Up
  3. Java资源大全中文版(Awesome最新版)(转载)
  4. 《CMOS集成电路后端设计与实战》——第2章 集成电路后端设计方法
  5. Bootloader - main system - Recovery的三角关系【转】
  6. 《撬动地球的Google》——Google的第一桶金(转载)
  7. IT 程序员、软件工程师值得考的证书有哪些?有什么证书可以考?
  8. MIPS汇编程序设计实验
  9. 计算机文件丢失不能正常启动,电脑说文件丢失或损坏开不了机怎么办?
  10. Glassfish的安装与使用
  11. CNN——残差网络实现
  12. 解决win10使用电池时自动调节亮度问题
  13. 有声音显示音频服务器,Win7右下角声音图标显示音频服务未运行的解决方法小结...
  14. 1小时、1天、1个月、一年的时间戳
  15. JAVA之输入行数打印等腰三角形
  16. howler.js_Howler.js可能是周围最好JavaScript音频库
  17. h3c交换机重启_h3c交换机怎么恢复出厂设置
  18. 西门子s7协议 android,工控协议 | 西门子S7协议学习分享
  19. 听说这10道大数据面试题把 98% 的求职者拒之BAT大厂门外(附解题方法)
  20. JdbcTemplate查询与批量更新

热门文章

  1. 2022大学生寒假社会实践活动稿件怎样向新闻媒体投稿?
  2. nginx 404解决
  3. c语言 输出音频 单片机,单片机播放WAV格式音频的理解
  4. vue2和vue3区别
  5. 【IoC 和 DI 有什么区别】
  6. 面向对象的 CSS (OOCSS)
  7. Linux——详解共享内存shared memory
  8. web漏洞之文件上传漏洞
  9. 历数金融危机 摘自http://www.ftchinese.com/sc/index.jsp
  10. 二叉树 html模板,用 DOM 与 CSS 展示二叉树