监听器
监听器概述
Web应用中的某些状态发生改变时会产生相应的事件
ServletContext、HttpSession、ServletRequest三个域对象引发的事件
域对象中的属性引发的事件(主要监听四大作用域)
监听器使用方法:
HttpSessionBindingListener接口:
HttpSessionBindingListener接口:在绑定session或从session中删除时会得到通知
在实体类中实现HttpSessionBindingListener
接口,重写两个方法:
@Override
public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
System.out.println("valueBound被执行");
}
@Override
public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
System.out.println("valueUnbound被执行");
}
在jsp页面中,创建这个实体类后,往session中存入时,就可以看到控制台的输出语句
<%@ page import="com.hz.pojo.Provider" %><%--
Created by IntelliJ IDEA.
User: ASUS
Date: 2022/10/8
Time: 15:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Provider provider=new Provider();
session.setAttribute("provider", provider);
session.setAttribute("provider", null);
%>
</body>
</html>
如果附null值,则可以看到执行valueUnbound被执行,可以理解为附null值就是删除属性
HttpSessionAttributeListener接口:
HttpSessionAttributeListener接口:在session中的属性列表发生变化时得到通知
创建一个新类,实现HttpSessionAttributeListener
接口,重写三个方法,在web.xml中配置后,即可监听全局的session
public class HttpSessionAttributeListenerTest implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
}
@Override
public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
}
@Override
public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
}
}
<listener>
<listener-class>com.hz.utils.HttpSessionListenerTest</listener-class>
</listener>
其他示例:
三层架构与MVC区别:
三层的示例:
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
MVC示例:
简单概述:模型-视图-控制器
MVC每个模块的作用:
- Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常负责在数据库中存取数据。
- View(视图)是应用程序中处理数据显示的部分。通常是依据模型数据创建的。
- Controller(控制器)是应用程序中处理用户交互的部分。通常负责从视图读取数据,控制用户输入,并向模型发送数据。