Servlet学习——监听器

简介: Servlet学习——监听器

【监听器】

监听器就是监听某个域对象状态变化的组件
【相关概念】
    事件源:被监听的对象(三个域对象 request、session、servletContext(也就是application))
    监听器:监听事件源对象事件源对象的状态的变化都会触发监听器
    注册监听器:将监听器与事件源进行绑定
    响应行为:监听器监听到事件源的状态变化时所涉及的功能代码(程序员编写代码)
【使用】
       加注解 :@WebListener
       可以监听ServletContext、HttpSession、ServletRequest
       监听器有 3 类 8 种
           1、监听生命周期
               ServletRequestListener
               HttpSessionListener
               ServletContextListener
           2、监听值的变化
               ServletRequestAttributeListener
               HttpSessionAttributeListener
               ServletContextAttributeListener
           3、针对Session 中的对象
               监听Session中的java对象(javaBean),是javaBean实现监听器的接口
               根据监听的类型选择实现的接口

实例:

监听页面在线人数

当有用户访问时,会去创建session对象 ,人数+1

当有用户退出时,会销毁对应session对象 ,人数-1

注:

     当你登录的时候也就是创建session的时候会+1,但是你退出浏览器的时候session仍然存在,并不会-1。

     你可以通过session.invalidate(); 去销毁session;

     你要是想要达到关闭浏览器去销毁session可以通过js

      < body οnbefοreunlοad=“window.location=‘loginout.jsp’” >

     在   loginout.jsp   中写 <% session.invalidate();%>

   目前知道的就这些,上面那个方法只能在IE中可行。

   如果有更好的方式,欢迎评论

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class Onlinecountlistener implements HttpSessionListener {
    private int onlineNumber = 0;
    @Override
    public void sessionCreated(HttpSessionEvent se) {
//        如果将值设置到session作用域中 范围太小 页面刷新时 在线人数并不更新
//        所以设置到更大的作用域application也就是ServletContext作用域中
//        这里获取ServletContext 为了就是这个
        onlineNumber++;
        ServletContext servletContext = se.getSession().getServletContext();
        servletContext.setAttribute("onlineNumber", onlineNumber);
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        onlineNumber--;
        ServletContext servletContext = se.getSession().getServletContext();
        servletContext.setAttribute("onlineNumber", onlineNumber);
    }
}
相关文章
|
11月前
|
小程序 Java 应用服务中间件
【JavaWeb学习】—Servlet(十三)
【JavaWeb学习】—Servlet(十三)
|
3月前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
37 0
|
5月前
|
API
servlet研究学习总结--OutputStream和PrintWriter的区别
servlet研究学习总结--OutputStream和PrintWriter的区别
192 1
|
6月前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
6月前
|
前端开发 Java 程序员
Servlet/过滤器/拦截器/监听器:
Servlet接口在Sun公司有两个默认的实现类:HttpServlet、GenericServlet。Servlet是一种运行服务器端的Java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
|
存储 Java 数据安全/隐私保护
servlet过滤器与监听器
前言 Servlet 过滤器和监听器是 Java Web 应用程序中常见的两种组件,它们提供了各种扩展 Web 应用程序功能的方式。 总的来说,过滤器和监听器都可以通过 Java Web 应用程序的配置文件或注解进行使用,方便灵活,并可以很好地实现框架与业务逻辑的分离,提高代码可维护性和扩展性。 过滤器(Filter) 1. 参数验证和转换:可以拦截用户提交的数据,并对数据格式进行验证、修正或转换。 2. 访问控制和认证:可以拦截请求并检查用户是否有访问特定资源的权限。 3. 日志记录:可以拦截请求并输出相应的日志信息,用于系统运行时的监测与故障排除。 4. 资源压缩和解密: 可以拦截响应并对
81 0
|
存储 Java
【Java Web编程 十一】深入理解Servlet监听器
【Java Web编程 十一】深入理解Servlet监听器
117 0
【Java Web编程 十一】深入理解Servlet监听器
|
Java 应用服务中间件
如何在个人web项目中使用Servlet监听器?
如何在个人web项目中使用Servlet监听器?
|
XML Java 应用服务中间件
都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet(二)
都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet(二)
243 0
|
Java 应用服务中间件 UED
都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet(一)
都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet(一)
219 0