JavaWeb监听器和过滤器

JavaWeb监听器

ServletContextListener监听器

Servlet的上下文监听,它主要实现监听ServletContext的创建和销毁。可以完成自己想要的初始化工作。主要包括下面两个方法

//启动服务的时候调用该方法
public void contextInitialized(ServletContextEvent sce);

//销毁该服务的时候调用该方法
public void contextDestroyed(ServletContextEvent sce);
ServletRequestListener监听器

监听ServletRequest域创建与销毁的监听器。ServletRequest的生命周期:每一次请求都会创建request,请求结束则销毁。主要包括下面两个方法

//访问服务器的任何资源都会调用该方法
public void requestDestroyed(ServletRequestEvent sre);

//当服务器对本次请求作出相应的时候,调用该方法
public void requestInitialized(ServletRequestEvent sre);
HttpSessionListener监听器

监听Httpsession域的创建与销毁的监听器。HttpSession对象的生命周期:第一次调用request.getSession时创建;销毁有以下几种情况(服务器关闭、session过期、 手动销毁)主要包括下面两个方法


//session创建的时候调用该方法
public void sessionCreated(HttpSessionEvent se);

//session销毁的时候调用该方法
public void sessionDestroyed(HttpSessionEvent se);
ServletContextAttributeListener监听器

主要实现监听ServletContext属性的增加,删除和修改。主要包括下面三个方法

/**
 * Receives notification that an attribute has been added to the
 * ServletContext.
 *
 * @param event the ServletContextAttributeEvent containing the
 * ServletContext to which the attribute was added, along with the
 * attribute name and value
 */
public void attributeAdded(ServletContextAttributeEvent event);

/**
 * Receives notification that an attribute has been removed
 * from the ServletContext.
 *
 * @param event the ServletContextAttributeEvent containing the
 * ServletContext from which the attribute was removed, along with
 * the attribute name and value
 */
public void attributeRemoved(ServletContextAttributeEvent event);

/*
 * Receives notification that an attribute has been replaced
 * in the ServletContext.
 *
 * @param event the ServletContextAttributeEvent containing the
 * ServletContext in which the attribute was replaced, along with
 * the attribute name and its old value
 */
public void attributeReplaced(ServletContextAttributeEvent event);
ServletRequestAttributeListener监听器

主要包含下面三个方法

/**
 * Receives notification that an attribute has been added to the
 * ServletRequest.
 *
 * @param srae the ServletRequestAttributeEvent containing the
 * ServletRequest and the name and value of the attribute that was
 * added
 */
public void attributeAdded(ServletRequestAttributeEvent srae);

/**
 * Receives notification that an attribute has been removed from the
 * ServletRequest.
 *
 * @param srae the ServletRequestAttributeEvent containing the
 * ServletRequest and the name and value of the attribute that was
 * removed
 */
public void attributeRemoved(ServletRequestAttributeEvent srae);

/**
 * Receives notification that an attribute has been replaced on the
 * ServletRequest.
 *
 * @param srae the ServletRequestAttributeEvent containing the
 * ServletRequest and the name and (old) value of the attribute
 * that was replaced
 */
public void attributeReplaced(ServletRequestAttributeEvent srae);
HttpSessionListener监听器

HTTP会话监听,该接口实现监听HTTP会话创建、销毁。主要包括下面两个方法

/**
 * Receives notification that a session has been created.
 *
 * @param se the HttpSessionEvent containing the session
 */
public void sessionCreated(HttpSessionEvent se);

/**
 * Receives notification that a session is about to be invalidated.
 *
 * @param se the HttpSessionEvent containing the session
 */
public void sessionDestroyed(HttpSessionEvent se);

还有下面两个监听器

HttpBindingListener监听器

接口实现监听HTTP会话中对象的绑定信息。它是唯一不需要在web.xml中设定Listener的

HttpSessionAttributeListener监听器

该接口实现监听HTTP会话中属性的设置请求

可以通过下面的代码来查看前三个监听器的区别

MyHttpSessionListener

public class MyHttpSessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {

        System.out.println("MyHttpSessionListener.sessionCreated 的方法啦");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("MyHttpSessionListener.sessionDestroyed 的方法啦");
    }
}

MyServletContextListerner

public class MyServletContextListerner implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //比如可以在这里实现数据库连接的初始化等操作
        System.out.println("MyServletContextListerner.contextInitialized 方法被调用啦");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("MyServletContextListerner.contextDestroyed 方法被调用啦");

    }
}

MyservletRequestListner

public class MyServletRequestListener implements ServletRequestListener {
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {

        System.out.println("MyServletRequestListener.requestDestroyed 方法被调用啦");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("MyServletRequestListener.requestInitialized 方法被调用啦");
    }
}

在web中配置监听器

<listener>
  <listener-class>com.rookie.bigdata.Listener.MyServletContextListerner</listener-class>
  <listener-class>com.rookie.bigdata.Listener.MyServletRequestListener</listener-class>
  <listener-class>com.rookie.bigdata.Listener.MyHttpSessionListener</listener-class>
</listener>

javaWeb Filter

filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都又三个生命周期方法,同时他们在web.xml中的配置文件也是差不多的、 但是servlet主要负责处理请求,而filter主要负责拦截请求和放行。

FIlter接口有三个方法

//服务器启动的时候执行该方法
public void init(FilterConfig filterConfig) throws ServletException;

//执行过滤
public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain)
        throws IOException, ServletException;

//服务器停止的时候执行该方法
public void destroy();
Filter的执行顺序
  1. 客户端发出请求,先经过过滤器, 如果过滤器放行,那么才能到servlet
  2. 如果有多个过滤器, 那么他们会按照注册的映射顺序 来 排队。 只要有一个过滤器, 不放行,那么后面排队的过滤器以及咱们的servlet都不会收到请求。
  3. init方法的参数 FilterConfig , 可以用于获取filter在注册的名字 以及初始化参数。 其实这里的设计的初衷与ServletConfig是一样的。
  4. 如果想放行,那么在doFilter 方法里面操作,使用参数 chain
    chain.doFilter(request, response);// 放行, 让请求到达下一个目标。
  1. /* 写法格式与servlet一样。
  • 全路径匹配 以 / 开始

    /LoginServlet

  • 以目录匹配 以 / 开始 以 * 结束

    /demo01/*

  • 以后缀名匹配 以 * 开始 以后缀名结束

    .jsp .html *.do

原文地址:https://www.cnblogs.com/haizhilangzi/p/12318302.html

时间: 2024-10-29 03:46:22

JavaWeb监听器和过滤器的相关文章

J2EE监听器和过滤器基础

Servlet程序由Servlet,Filter和Listener组成,其中监听器用来监听Servlet容器上下文. 监听器通常分三类:基于Servlet上下文的ServletContex监听,基于会话的HttpSession监听和基于请求的ServletRequest监听. ServletContex监听器 ServletContex又叫application,存在范围是整个Servlet容器生命周期,当系统启动时就会创建,系统关闭时会销毁,该对象通常存放一些非常通用的数据,但是不推荐存放太多

JavaWeb学习——监听器和过滤器

监听器 与 Filters 一.概述 监听器是用于监听Web应用而实现了特定接口的Java类.监听器可以在事件发生前.后做一些有必要的处理. Servlet API提供了一系列的事件和事件监听接口.上层的servlet/JSP应用能够通过调用这些API进行事件驱动的开发. 这里监听的所有事件都继承自java.util.EventObject对象. Servlet 中的监听器分类: 监听三个域对象(ServletContext.HttpSession.ServletRequest)的创建和销毁的三

监听器和过滤器

过滤器生命周期的四个阶段: 1.实例化:Web容器在部署Web应用程序时对所有过滤器进行实例化.Web容器回调它的无参构造方法.2.初始化:实例化完成之后,马上进行初始化工作.Web容器回调init()方法. 3.过滤:请求路径匹配过滤器的URL映射时.Web容器回调doFilter()方法--主要的工作方法. 4.销毁: Web容器在卸载Web应用程序前,Web容器回调destroy()方法. 监听器概述 监听你的web应用,监听许多信息的初始化,销毁,增加,修改,删除值等 Servlet监听

Servlet初始配置 监听器和过滤器

ServletContext:application范围内的参数 此所设定的参 来源: http://note.sdo.com/my 数,在JSP网页中可以使用下列方法来取得: ${initParam.param0}, <%=application.getInitParameter("param0") %><br/> 若在Servlet可以使用下列方法来获得: String param_name=getServletContext().getInitParame

java web监听器和过滤器

2019-3-26 监听器:6+2 1.j监听器种类 2.监听器的编写步骤(重点): a.编写一个监听器类去实现监听器接口 b.覆盖监听器的方法 c.需要在web.xml中进行配置---注册 过滤器 Filter 过滤器的编写步骤(重点): a.编写一个过滤器类去实现过滤器接口 b.覆盖过滤器的方法 c.需要在web.xml中进行配置---注册 原文地址:https://www.cnblogs.com/houchen/p/10604782.html

Spring监听器和过滤器的全局配置

<!-- 监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>cl

vue.js基础知识篇(1):简介、数据绑定、指令、计算属性、表单控件绑定和过滤器

目录第一章:vue.js是什么? 代码链接: http://pan.baidu.com/s/1qXCfzRI 密码: 5j79 第一章:vue.js是什么? 1.vue.js是MVVM框架 MVVM的代表框架是Angular.js,以及vue.js. MVVM的view和model是分离的,View的变化会自动更新到ViewModel上,ViewModel的变化会自动同步到View上显示.这种自动同步依赖于ViewModel的属性实现了Observer. 2.它与angular.js的区别 相同

拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别

1.过滤器(Filter) 首先说一下Filter的使用地方,我们在配置web.xml时,总会配置下面一段设置字符编码,不然会导致乱码问题: <filter>   <filter-name>encoding</filter-name>   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>   <init-param> 

django 内建标签和过滤器参考

下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block 定义一个能被子模板覆盖的 块. 参阅 模板继承 了解更多信息 comment 注释.模板引擎会忽略掉 {% comment %} 和 {% endcomment %} 之间的所有内容. cycle 在循环时轮流使用给定的字符串列表中的值. 在一个循环中, 在循环过程中的每次循环里轮流使用给定的字符串