zoukankan      html  css  js  c++  java
  • 监听器的配置,绑定HttpSessionListener监听器的使用

    监听器的配置,绑定

    <listener>

    <listener-class>监听器的全路径</listener-class>

    </listener>

    ServletContextListener企业用途

    加载框架的配置文件:

    Spring框架提供了一个核心监听器ContextLoaderListener。

    定时任务调度:

    HttpSessionListener监听器的使用

    HttpSessionListener监听器(实现接口)  用来监听HttpSession域 对象的创建和销毁

    HttpSessionListener监听器作用

    用来监听HttpSession对象的创建和销毁。

    HttpSession创建和销毁

    创建:服务器端第一次调用getSession()方法时候。

    销毁:非正常关闭服务器(正常关闭服务器session会被序列化)。

    Session过期(默认过期时间30分钟)。

    手动调用session.invalidate()方法。

    HttpSessionListener监听器的方法

    监听HttpSession对象创建

    sessionCreated(HttpSessionEvent  se)

    监听HttpSession对象销毁

    sessionDestroyed(HttpSessionEvent  se)

    编写监听器监听HttpSession对象创建和销毁

    监听器代码

    监听器的配置,绑定

    <listener>

    <listener-class>监听器的全路径</listener-class>

    </listener>

    访问HTML是否创建Session :不会

    访问JSP是否创建Session :会

    访问Servlet是否创建Session :不会(默认没有调用getSession方法)

    ServletRequestListener监听器的使用

    ServletRequestListener监听器(实现接口) 用来监听ServletRequest域对象的创建和销毁

    ServletRequestListener监听器作用

    用户监听ServletRequest对象的创建和销毁

    ServletRequest对象的创建和销毁

    创建:从客户端向服务器发送一次请求,服务器就会创建request对象。

    销毁:服务器对这次请求作出了响应之后,request对象就销毁了。

    ServletRequestListener监听器的方法

    监听ServletRequest对象的创建:requestInitialized(ServletRequestEvent src)

    监听ServletRequest对象的销毁::requestDestroyed(ServeltRequestEvent src)

    编写监听器代码

    监听器代码

    监听器配置

    <listener>

    <listener-class>监听器的全路径</listener-class>

    </listener>

    访问HTML页面是否创建请求对象 :会

    访问JSP页面是否创建请求对象 :会

    访问Servlet是否创建请求对象 :会

    监听三个域对象的属性变更的监听器

    ServletContextAttributeListener:(也是需要实现)监听ServletContext对象中的属性变更(属性添加,移除,替换)的监听器

    attributeAdded(canshu);  添加属性监听器

    attributeRemoved(canshu);  移除属性监听器

    attributeReplaced(canshu):替换属性监听器

    HttpSessionAttributeListener:监听HttpSession对象中的属性变更(属性添加,移除,替换)的监听器

    attributeAdded(canshu);  添加属性监听器

    attributeRemoved(canshu);  移除属性监听器

    attributeReplaced(canshu):替换属性监听器

    ServletRequestAttributeListener:监听ServletRequest对象中的属性变更(属性添加,移除,替换)的监听器

    attributeAdded(canshu);  添加属性监听器

    attributeRemoved(canshu);  移除属性监听器

    attributeReplaced(canshu):替换属性监听器

    演示第二类监听器(三个域的属性监听器 用法都一样)

    演示HttpSessionAttributeListener

    代码编写

    web.xml配置监听器

    编写测试的JSP

    监听HttpSession中Java类状态改变的监听器

    第三类监听器概述

    保存在Session域中的Java类可以有多种状态:绑定到session中;从session中解除绑定;随session对象持久化到一个存储设备中(钝化);随session对象从一个存储设备中恢复(活化)。

    Servlet对方中定义了两个特殊的监听的接口来帮助Java类了解自己在Session域中的状态:

    HttpSessionBindingListener接口  绑定和解绑的接口

    HttpSessionActivationListener接口, 钝化和活化的接口

    实现这两个接口的类不需要在web.xml中进行配置。

    HttpSessionBindingListener监听器:

    HttpSessionBindingListener接口:用来监听Java类在HttpSession中的绑定和解除绑定的状态的监听器:(绑定必须是java对象 才是绑定)

    valueBound(HttpSessionBindingEvent event);绑定监听器

    valueUnBound(HttpSessionBindingEvent event);解除绑定监听器

     绑定也是用set ,解除绑定用remove

    测试代码:

    HttpSessionActivationListener监听器

    监听HttpSession中Java类的钝化和活化监听器。

    sessionDidActivate(HttpSessionEvent se); 活化监听器

    sessionWillPassivate(HttpSessionEvent se); 钝化监听器 需要实现序列化接口

    测试代码

    配置完成session的序列化和反序列化

    Context标签可以配置在:

    tomcat/conf/context.xml  :所有tomcat下虚拟主机和虚拟目录下的工程都会序列化session

    tomcat/conf/Catalina/localhost/context.xml :localhost虚拟主机下的所有项目会序列化session

    工程/META-INF/context.xml :当前工程才会序列化session。

    <Context>

    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">

    <Store className="org.apache.catalina.session.FileStore" directory="javaee"/>

    </Manager>

    </Context>

    Filter的概述

    Filter称为过滤器,它是Servlet技术中最实用的技术,web开发人员通过Filter技术,对web服务器所管理的资源(JSP,Servlet,静态图片或静态html文件)进行拦截,从而实现一些特殊的功能。

    Filter就是过滤从客户端向服务器发送的请求。

    为什么学习过滤器

    Filter的入门

    Filter的入门

    第一步:编写一个类实现Filter接口

    第二步:对过滤器进行配置

    <filter>

    <filter-name>filterName</filter-name>

    <filter-class>quanlujing</filter-class>

    <filter>

    <filter-mapping>

    <filter-name>filterName</filter-name>

    <url-pattern>/*</url-pattern>

    </filter-mapping>

    FilterChain对象的概述

    FilterChain对象的概述

    什么是FilterChain

    FilterChain过滤器链:在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为是一个过滤器链。

    Web服务器根据Filter在web.xml文件中的注册顺序(mapping的配置顺序)决定先调用哪个Filter。依次调用后面的过滤器,如果没有下一个过滤器,调用目标资源

    FilterChain的演示

    Filter的生命周期

    Filter的生命周期描述

    Filter的创建和销毁是由web服务器负责。Web应用程序启动的时候,web服务器创建Filter的实例对象。并调用其init方法进行初始化(filter对象只会创建一次,init方法也只会执行一次)。

    每次filter进行拦截的时候,都会执行doFilter的方法。

    当服务器关闭(正常关闭)的时候,应用从服务器中移除的时候,服务器会销毁Filter对象。

    FilterConfig对象的概述

    FilterConfig对象的概述

    FilterConfig对象的作用:

    用来获得Filter的相关的配置的对象。

    FilterConfig对象的API:的方法 (用filerConfig调用)

    getFilterName(); 获得过滤器的名称

    getInitParameter(String  name);  获取指定的参数

    getInitParameterNames(); 获取所有初始化参数的名称 (返回的是枚举类型的)hasMoreElements()在遍历枚举的时候 判断是否有下一个参数

    getServletContext();

    FilterConfig的演示

    过滤器的相关配置

    过滤器的相关配置

    <url-pattern>的配置

    完全路径匹配 :以/开始   比如/aaa  /aaa/bbb

    目录匹配 :以/开始 以*结束  比如/*  /aaa/*  /aaa/bbb/*

    扩展名匹配    :不能以/开始 以*开始 比如*.jsp  *.do   *.action

    <servlet-name>的配置

    专门以Servlet的配置的名称拦截Servlet。

    <dispatcher>的配置

    默认的情况下过滤器会拦截请求。如果进行转发(需要拦截这次转发)。

    dispatcher的取值(在filter-mapping 标签下面设置dispatcher标签)

    REQUEST:默认值。默认过滤器拦截的就是请求。

    FORWARD:转发。 配置之后 过滤器拦截转发

    INCLUDE:页面包含的时候进行拦截 。

    ERROR:页面出现全局错误页面跳转的时候进行拦截

    如何增强一个类中的方法?

    继承

    必须要能够控制这个类的构造。

    装饰者

    被增强的类和增强的类需要实现相同的接口。

    在增强的类中获得被增强的类的引用。

    缺点:接口中的方法过多,重写很多其他的方法。

    动态代理

    类需要实现接口。

  • 相关阅读:
    Remote Debugging (2)
    Remote Debugging (3)
    在面试中常见额智力测试
    异常处理和约束
    方法&函数区别,反射
    类与类之间的关系
    成员
    初识面向对象
    一些令你""呵呵''的题目
    内置函数二 & 递归 & 二分查找
  • 原文地址:https://www.cnblogs.com/liuys635/p/10246853.html
Copyright © 2011-2022 走看看