Javaweb 9监听器与MVC

目录

监听器与MVC

监听器

Listener的生命周期

HttpSessionListener接口

HttpSessionListener、HttpSessionBindingListener二者的区别

ServletContextListener接口

监听器分类

常用监听器接口

MVC

MVC设计模式


监听器与MVC

监听器

监听器是Web应用程序事件模型的一部分

通过使用监听器,开发者可以将应用程序的关键行为和状态抽象成事件,并在需要的时候采取相应的措施。

Web应用中的某些状态发生改变时会产生相应的事件

ServletContext、HttpSession、ServletRequest三个域对象引发的事件

域对象中的属性引发的事件

监听器可以接收这些事件,以便在事件发生时做出相关处理

创建类实现监听器接口

javax.servlet.http.HttpSessionBindingListener

在valueBound()和valueUnbound()方法中实现用户数量的统计

valueBound(HttpSessionBindingEvent arg0) {
      //用户对象存入session时自动调用
      //用户数量加1
}
valueUnbound(HttpSessionBindingEvent arg0) {
      //用户对象从session中删除时自动调用
      //用户数量减1
}

valueUnbound方法会在三种情况下自动调用:

调用使session失效的方法:session.invalidate()

session超时

调用setAttribute重新设置了别的对象,或是调用removeAttribute移除了这个属性

Listener的生命周期

监听器(Listener)在JavaWeb应用程序中起到监听和处理事件的作用。监听器的生命周期与Web应用程序的生命周期密切相关。

  1. ServletContextListener会在Web应用程序启动时起作用,并在Web应用程序关闭时销毁

  2. ServletRequestListener会在每次客户端请求到达服务器时起作用,并在服务器响应完成后销毁

  3. HttpSessionListener会在每次HttpSession创建和销毁时起作用

HttpSessionListener接口

HttpSessionListener

sessionCreated(HttpSessionEvent event)

sessionDestroyed(HttpSessionEvent event)

                执行session.invalidate()方法

                session会话超时

在web.xml中配置监听器

<listener>
    <listener-class>监听器完全限定名</listener-class>
</listener>

HttpSessionListener、HttpSessionBindingListener二者的区别

  1. HttpSessionListener只需要设置到web.xml就可以监听整个应用中的所有session

  2. HttpSessionBindingListener必须实例化后放入某一个session中,才能监听

  3. 监听范围:

HttpSessionListener设置一次就可以监听所有session

HttpSessionBindingListener通常是一对一

ServletContextListener接口

contextInitialized(ServletContextEvent arg)

contextDestroyed(ServletContextEvent arg)

监听器分类

根据三个域对象上的具体操作,将监听器划分为三类

监听三个域对象的创建和销毁事件的监听器

监听域对象中属性的增加、删除、替换事件的

监听器监听绑定到HttpSession域中的某个对象的状态的监听器,又称为感知型监听器

常用监听器接口

监听器接口说 明
javax.servlet. ServletContextListener在Servlet上下文对象初始化或销毁时得到通知
javax.servlet .ServletRequestListener在请求对象初始化时或者被销毁时得到通知
javax.servlet.http. HttpSessionListener在session创建后或者失效前得到通知
javax.servlet. ServletContextAttributeListener在Servlet上下文中的属性列表发生变化时得到通知
javax.servlet. ServletRequestAttributeListener在请求对象中的属性列表发生变化时得到通知
javax.servlet.http. HttpSessionAttributeListener在session中的属性列表发生变化时得到通知
javax.servlet.http. HttpSessionActivationListener绑定到session中,当session被钝化或者激活时得到通知
javax.servlet.http.HttpSessionBindingListener在绑定session或从session中删除时会得到通知

使用监听器统计在线用户人数

创建监听器,在监听器的方法中统计人数

监听器分类和用途

感知型监听器无需配置,需要和session绑定

非感知型监听器需要在web.xml中配置

MVC

MVC设计模式

视图(View)- JSP、HTML等:负责与用户交互

控制器(Controller)- Servlet:负责流程控制

模型(Model)- JavaBean:负责业务逻辑处理、数据库访问

MVC 优点

多视图共享一个模型,大大提高代码的可重用性

MVC三个模块相互独立,松耦合架构

控制器提高了应用程序的灵活性和可配置性

有利于软件工程化管理

MVC 缺点

原理复杂

增加了系统结构和实现的复杂性

视图对模型数据的低效率访问

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值