Servlet的监听器

这篇具有很好参考价值的文章主要介绍了Servlet的监听器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Servlet常用的监听器
ServletContextAttributeListener 用来感知ServlerContext对象属性变化,比如添加或删除属性变化
ServletContextListener 用来感知ServlerContext对象的创建和销毁的
ServletRequestListener 可以用来监听感知ServletRequest对象的创建和销毁的
ServletRequestAttributeListener 用来感知ServletRequest属性变化,如何添加或删除属性还是替换
HttpSessionListener监听session的变化,常用于统计在线人数
HttpSessionAttributeListener用来监听Session属性变化
HttpSessionBindingListener 用来监听把一个数据绑定到Session对象 感知监听器
HttpSessionActivationListener用来监听session绑定的对象钝化(把对象持久化磁盘)
常用的有前6个

package com.sparrow.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * @Author: 诉衷情の麻雀
 * @Description: 当一个类实现了ServletContextListener 是一个监听器,该类可以监听的事件
 * 由该类实现的监听接口决定 该类可以监听ServletContext的创建和销毁
 * 当web应用启动时,就会产生ServletContextEvent事件,会调用监听器的对应事件处理方法contextInitialized,同时会传递事件对象
 * 我们可以通过ServletContextEvent事件对象,来获取需要的信息,然后再进行业务处理
 * 需要在web.xml配置监听器这样才能使tomcat知道,底层使用反射机制
 * @DateTime: 2023/7/5 9:57
 **/
public class SparrowServletContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ServletContext servletContext = sce.getServletContext();
        System.out.println("SparrowServletContextListener监听到" + servletContext+ " 被创建...");
        //如果我们获取到ServletContext对象进行业务处理
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        ServletContext servletContext = sce.getServletContext();
        System.out.println("SparrowServletContextListener监听到" + servletContext+ " 被销毁...");
        //比如可以对servletContext数据进行处理 或者日志的管理
        System.out.println("进行处理");


    }
}

/**
 * @Author: 诉衷情の麻雀
 * @Description: TODO
 * @DateTime: 2023/7/5 10:10
 **/
public class SparrowServletContextAttributeListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("SparrowServletContextAttributeListener监听到"+ scae.getName());
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {
        System.out.println("SparrowServletContextAttributeListener监听到:" + scae.getValue());
    }


    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {

    }
}

ServletContextAttributeListener属性监听器

package com.sparrow.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

/**
 * @Author: 诉衷情の麻雀
 * @Description: TODO
 * @DateTime: 2023/7/5 10:10
 **/
public class SparrowServletContextAttributeListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("SparrowServletContextAttributeListener监听到添加属性:"+ scae.getName()+"=" + scae.getValue());
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {
        System.out.println("SparrowServletContextAttributeListener监听到删除属性:" + scae.getName() + "="+ scae.getValue());
    }


    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {
        System.out.println("SparrowServletContextAttributeListener监听到修改/替换属性:" + scae.getName() + "="+ scae.getValue());
    }
}

配置一个HelloServlet

/**
 * @Author: 诉衷情の麻雀
 * @Description: TODO
 * @DateTime: 2023/7/18 19:59
 **/
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("helloServlet被调用了");
        ServletContext servletContext = req.getServletContext();
        servletContext.setAttribute("name", "诉衷情の麻雀");
        servletContext.setAttribute("name", "诉衷情の麻雀");
        servletContext.removeAttribute("name");
    }
}

   <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.sparrow.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet</url-pattern>
    </servlet-mapping>

Servlet的监听器,JavaWeb,servlet,监听器,过滤器,java

HttpSessionListener

/**
 * @Author: 诉衷情の麻雀
 * @Description: TODO
 * @DateTime: 2023/7/5 10:25
 **/
public class SparrowHttpSessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        HttpSession session = se.getSession();
        //当session创建时设置一个生命周期
        session.setMaxInactiveInterval(30);
        System.out.println("SparrowHttpSessionListener监听到session创建= " + session.getId());
    }


    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        HttpSession session = se.getSession();
        System.out.println("SparrowHttpSessionListener监听到session销毁= " + session.getId());
    }
}

 @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取session
        HttpSession session = req.getSession(); //如果没有就创建

    }

配置监听器

 <!--配置监听器-->
    <listener>
        <listener-class>com.sparrow.listener.SparrowHttpSessionListener</listener-class>
    </listener>
    <listener>
        <listener-class>com.sparrow.listener.SparrowServletContextListener</listener-class>
    </listener>
    <listener>
        <listener-class>com.sparrow.listener.SparrowServletContextAttributeListener</listener-class>
    </listener>
    <listener>
        <listener-class>com.sparrow.listener.SparrowRequestListener</listener-class>
    </listener>

Servlet的监听器,JavaWeb,servlet,监听器,过滤器,java

HttpSessionAttributeListener

package com.sparrow.listener;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

/**
* @Author: 诉衷情の麻雀
* @Description: TODO
* @DateTime: 2023/7/18 20:26
**/
public class SparrowHttpSessionAttributeListener implements HttpSessionAttributeListener {
   @Override
   public void attributeAdded(HttpSessionBindingEvent se) {
       System.out.println("SparrowHttpSessionAttributeListener 监听到session添加属性了" + se.getName() + "=" + se.getValue() );
   }

   @Override
   public void attributeRemoved(HttpSessionBindingEvent se) {
       System.out.println("SparrowHttpSessionAttributeListener 监听到session删除属性了" + se.getName());
   }

   @Override
   public void attributeReplaced(HttpSessionBindingEvent se) {
       System.out.println("SparrowHttpSessionAttributeListener 监听到session修改属性了" + se.getName() + "=" + se.getValue() );

   }
}

Servlet的监听器,JavaWeb,servlet,监听器,过滤器,java

ServletRequestListener监听器

作用:监听Request对象的创建和销毁
常用于监控某个IP访问网站频率/用户访问的页面、资源(日志)

public class SparrowRequestListener implements ServletRequestListener {
    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("监听到request对象创建");
        ServletRequest servletRequest = sre.getServletRequest();
        System.out.println("访问IP=" + servletRequest.getRemoteAddr());
        System.out.println("访问的资源=" + ((HttpServletRequest) servletRequest).getRequestURL());

    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("监听到request对象被销毁");
    }
}

Servlet的监听器,JavaWeb,servlet,监听器,过滤器,java

ServletRequestAttributeListener监听器

作用:监听Request属性变化文章来源地址https://www.toymoban.com/news/detail-581574.html

public class SparrowRequestAttributeListener implements ServletRequestAttributeListener {
    @Override
    public void attributeAdded(ServletRequestAttributeEvent srae) {
        
    }

    @Override
    public void attributeRemoved(ServletRequestAttributeEvent srae) {
        ServletRequestAttributeListener.super.attributeRemoved(srae);
    }

    @Override
    public void attributeReplaced(ServletRequestAttributeEvent srae) {
        ServletRequestAttributeListener.super.attributeReplaced(srae);
    }
}

到了这里,关于Servlet的监听器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot中使用拦截器、过滤器、监听器

    Javaweb三大组件:servlet、Filter(过滤器)、 Listener(监听器) SpringBoot特有组件:Interceptor(拦截器) 过滤器、拦截器、监听器、AOP(后续文章介绍)、全局异常处理器(后续文章介绍)是搭建系统框架时,经常用到的部分,全局异常处理器的作用很明显,就是处理接口执行

    2024年02月03日
    浏览(30)
  • Spring中最简单的过滤器和监听器

            Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息

    2024年02月14日
    浏览(28)
  • 高手速成 | 过滤器、监听器的创建与配置

       本节讲解过滤器、监听器的创建以及监听事件配置示例。 【例1】创建过滤器及配置过滤规则。 (1) 在Eclipse中新建一个Web项目,取名为Chapt_09。在src目录下,新建一个名为com.test.filter的包。选中该包并按Ctrl+N组合键,在弹出的菜单中选择Web→Filter。选择创建过滤器,如图

    2024年02月06日
    浏览(37)
  • SpringBoot2.0(过滤器,监听器,拦截器)

    使用Servlet3.0的注解进行配置 启动类里面增加 @ServletComponentScan ,进行扫描 新建一个Filter类,implements Filter ,并实现对应接口 @WebFilter 标记一个类为Filter,被spring进行扫描 urlPatterns:拦截规则,支持正则 控制chain.doFilter的方法的调用,来实现是否通过放行, 不放行的话,web应用

    2024年02月07日
    浏览(31)
  • springbboot拦截器,过滤器,监听器及执行流程

    过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前 请求按照上图进入conteoller后执行完再返回 过滤器是Servlet规范中定义的一种组件,可以用于在请求进入Web应用程序之前或响应离开Web应用程序之前对请

    2024年02月13日
    浏览(36)
  • 033-安全开发-JavaEE应用&SQL预编译&Filter过滤器&Listener监听器&访问控制

    1、JavaEE-JDBC-SQL预编译 2、JavaEE-HTTP-Filter过滤器 3、JavaEE-对象域-Listen监听器 演示案例: ➢JavaEE-预编译-SQL ➢JavaEE-过滤器-Filter ➢JavaEE-监听器-Listen 提前编译好执行逻辑,你注入的语句不会改变原有逻辑! 预编译写法: safesql 是一个预编译的 SQL 查询语句,其中 ? 是一个占位符

    2024年02月22日
    浏览(35)
  • web3j的基础用法-6合约的监听器事件Event和过滤器EthFilter,以及NullPointed,调用失败导致的bug解决

    本篇以Uniswap为例(https://uniswap.org/) 合约地址 :0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (Uni) 监听合约Tranfer事件 调用代码 核心代码实现在这里 之前实验全量区块,导致请求多次失败,是由于个人RPC节点的请求和数据有限,为了测试出结果,从13763721L block到当前,结果毫秒级返

    2024年02月11日
    浏览(29)
  • 【JavaWeb】9—监听器

    ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍收藏⭐支持一下博主~😆 可见Java设计模式中的观察者模式。 观察者:监控『被观察者』

    2023年04月09日
    浏览(31)
  • javaweb监听器和juery技术

    为其添加过滤器 最终到达的页面

    2024年02月13日
    浏览(24)
  • HttpSessionListener监听器和HttpSessionAttributeListener监听器

    1.作用:监听Session创建或销毁,即生命周期监听 2.相关方法: 3.使用场景: 和前面的ServletContextListener等一样,可以用于监控用户上线和离线 4.代码 HttpSessionListener监听器 实现类 HttpSessionAttributeListener监听器 1.作用:监听Session属性的变化,使用少 2.相关方法: 3.代码 监听器 实

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包