笔记:
ServletContextListener监听器的方法
监听ServletContext对象的创建
contextInitialized(ServletContextEvent sce)
监听ServletContext对象的销毁
contextDestroyed(ServletContextEvent sce)
编写监听器
1、监听器的代码
2、监听器的配置
ServletContextListener的企业用途
加载框架的配置文件
Spring框架提供了一个核心监听器叫ContextLoaderListener
定时任务调度
HttpSessionListener监听器的使用
HttpSessionListener监听器作用
用来监听HttpSession对象的创建和销毁
HttpSession创建和销毁
创建:
服务器端第一次调用getSession()方法的时候
销毁:
非正常关闭服务器(正常关闭服务器Session会被序列化)
Session过期(默认过期时间30分钟)
手动调用session.invalidate()方法
HttpSessionListener监听器的方法
监听HttpSession对象创建
sessionCreated(HttpSessionEvent
se)
监听HttpSession对象销毁
sessionDestroyed(HttpSessionEvent
se)
编写监听器监听HttpSession对象创建和销毁
监听器的代码
监听器的配置
问题:
访问HTML是否会创建Session?
访问JSP是否会创建Session?
访问Servlet是否会创建Session?
ServletRequestListener监听器的使用
ServletRequestListener监听器的作用
用于监听ServletRequest对象的创建和销毁
ServletRequest对象的创建和销毁
创建:从客户端向服务器发送一次请求,服务器就会创建Request对象
销毁:服务器对这次请求作出了响应之后,Request对象就销毁了
ServletRequestListener监听器的方法
监听ServletRequest对象的创建
requestInitialized(ServletRequestEvent sre)
监听ServletRequest对象的销毁
requestDestroyed(ServletRequestEvent sre)
编写监听器代码
监听器代码
监听器配置
问题:
访问HTML页面是否创建请求对象?会
访问JSP页面是否创建请求对象?会
访问Servlet是否创建请求对象?会
统计当前在线人数的案例
案例分析
[if !vml]
[endif]
在服务器启动的时候需要有一个初始值为零。
当浏览器访问服务器上的某个JSP了,就会创建Session,
此时获取初始值,进行+1操作。
如果Session销毁了,获取该值进行-1操作
代码实现
1、创建ServletContextListener进行初始化
2、创建HttpSessionListener
3、配置监听器
4、创建JSP页面
监听三个域对象的属性变更的监听器
一、三类监听器
ServletContextAttributeListener
监听ServletContext对象中的属性变更(属性添加、移除、替换)的监听器
attributeAdded(ServletContextAttributeEvent event)
attributeRemoved(ServletContextAttributeEvent event)
attributeReplaced(ServletContextAttributeEvent event)
HttpSessionAttributeListener
监听HttpSession对象中的属性变更(属性添加、移除、替换)的监听器
attributeAdded(HttpSessionBindingEvent event)
attributeRemoved(HttpSessionBindingEvent event)
attributeReplaced(HttpSessionBindingEvent event)
ServletRequestAttributeListener
监听ServletRequest对象中的属性变更(属性添加、移除、替换)的监听器
attributeAdded(ServletRequestAttributeEvent srae)
attributeRemoved(ServletRequestAttributeEvent srae)
attributeReplaced(ServletRequestAttributeEvent srae)
演示第二类监听器
1、演示HttpSessionAttributeListener
2、配置监听器
3、编写测试的JSP
监听HttpSession中Java类状态改变的监听器
第三类监听器概述
1、保存在Session域中的Java类可以有多种状态:绑定到Session中、从Session中解除绑定、随Session对象持久化到一个存储设备中(钝化)、随Session对象从一个存储设备中恢复(活化)
2、Servlet规范中中定义了两个特殊的监听的接口,来帮助Java类了解自己在Session域中的状态,分别是:
HttpSessionBindingListener接口
HttpSessionActivationListener接口
实现了这两个接口的类,是不需要在web.xml中进行配置的
HttpSessionBindingListener监听器
监听Java类在HttpSession中的绑定和解除绑定的状态的监听器
valueBound(HttpSessionBindingEvent event)
valueUnbound(HttpSessionBindingEvent event)
测试代码
HttpSessionActivationListener监听器
监听HttpSession中Java类的钝化和活化的监听器
sssionDidActivate(HttpSessionEvent se)
sessionWillPassivate(HttpSessionEvent se)
测试代码
配置完成Session的序列化和反序列化
Context标签可以配置在:
Tomcat/conf/context.xml:所有Tomcat下虚拟主机和虚拟目录下的工程都会序列化Session
Tomcat/conf/Catalina/localhost/context.xml:只有localhost虚拟主机下的所有项目会序列化Session
工程/META-INF/context.xml:只有当前工程才会序列化Session
Filter
Filter的概述
什么是Filter
Filter称为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对Web服务器所管理的资源(JSP、Servlet、静态图片、静态html文件等)进行拦截,从而实现一些特殊的功能
Filter就是过滤从客户端向服务器发送请求
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>商品信息显示页面</h1>
<table border="1" width="600">
<tr>
<td>商品名称</td>
<td>商品价钱</td>
<td>商品总数量</td>
<td>商品上架时间</td>
</tr>
<c:forEach var="myuser" items="${ list }">
<tr>
<td>${ myuser.gname }</td>
<td>${ myuser.price }</td>
<td>${ myuser.number }</td>
<td>${ myuser. gdate}</td>
</tr>
</c:forEach>
</table>
</body>
</html>