博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Listener--HttpSessionListener、ServletRequestListener接口的使用详解
阅读量:2442 次
发布时间:2019-05-10

本文共 2729 字,大约阅读时间需要 9 分钟。

HttpSessionListner

HttpSessionListner监听的是HttpSession域对象的创建与销毁

  • HttpSession对象的生命周期:
    何时创建:第一次调用request.getSession时创建
    何时销毁:服务器关闭销毁、session过期、手动销毁

HttpSessionListener的方法:

在这里插入图片描述

实例:使用HttpSessionListener统计网站在线人数

监听器:

package pers.zhang.listener; /** * @author zhang * @date 2019/9/19 - 23:09 */import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class MySessionListener implements HttpSessionListener{
//计数器 static int count = 0; public synchronized void sessionCreated(HttpSessionEvent se) {
//session创建,计数器+1 count++; //存入ServletContext域中 se.getSession().getServletContext().setAttribute("count",count); System.out.println("增加一人,现有" + count + "人"); } public synchronized void sessionDestroyed(HttpSessionEvent se) {
//session销毁,计数器-1 count--; //存入ServletContext域中 se.getSession().getServletContext().setAttribute("count",count); System.out.println(); System.out.println("减少一人,现有" + count + "人"); }}

注册:

pers.zhang.listener.MySessionListener

启动服务器,访问两次,控制台输出:

增加一人,现有1人增加一人,现有2人

ServletRequestListener

ServletRequestListener监听的是ServletRequest域的创建与销毁。

  • ServletRequest的生命周期

    创建:每一请求都会创建request
    销毁:请求结束

  • ServletRequestListener的方法

    在这里插入图片描述

实例:统计网站访问次数

监听器:

package pers.zhang.listener;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;import java.util.Date;/** * @author zhang * @date 2019/9/20 - 0:07 */public class MyServletRequestListener implements ServletRequestListener {
@Override public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
System.out.println("requestDestroyed" + "," + new Date()); System.out.println("当前訪问次数:" + servletRequestEvent.getServletContext().getAttribute("count")); } @Override public void requestInitialized(ServletRequestEvent servletRequestEvent) {
System.out.println("requestInitialized" + "," + new Date()); Object count = servletRequestEvent.getServletContext().getAttribute("count"); Integer cInteger = 0; if (count != null) {
cInteger = Integer.valueOf(count.toString()); }else{
count = 0; } System.out.println("历史訪问次数::" + count); cInteger++; servletRequestEvent.getServletContext().setAttribute("count", cInteger); }}

注册:

pers.zhang.listener.MyServletRequestListener

启动服务器并访问,控制台输出:

requestInitialized,Fri Sep 20 00:19:00 CST 2019历史訪问次数::0requestDestroyed,Fri Sep 20 00:19:01 CST 2019当前訪问次数:1

再次访问,控制台输出:

requestInitialized,Fri Sep 20 00:21:31 CST 2019历史訪问次数::1requestDestroyed,Fri Sep 20 00:21:31 CST 2019当前訪问次数:2

转载地址:http://kisqb.baihongyu.com/

你可能感兴趣的文章
amazon 产品数据集_亚马逊获得产品安置的报酬,但您当地的杂货店也是如此
查看>>
在word 中怎么光标对齐_如何在Microsoft Word中水平对齐表
查看>>
dsp怪胎_IT怪胎:使用SNMP(简单网络管理协议)监视网络设备
查看>>
如何在Windows 8.1的“开始”屏幕上切换任务
查看>>
代码编辑器 最佳配色_最佳在线照片编辑器
查看>>
outlook自定义快捷键_在Microsoft Outlook中使用自定义搜索文件夹节省时间
查看>>
windows禁用屏幕旋转_如何在Windows 10中禁用屏幕自动旋转
查看>>
aero glass_不,并非总是记录:您需要了解的Google Glass
查看>>
多硬盘硬盘主分区和逻辑分区_您可以将硬盘分为四个以上的主分区吗?
查看>>
u盘启动 your pc_您的Windows PC最终可能会学会在使用它时停止重新启动
查看>>
android web_Android Web消息:它是什么以及如何使用
查看>>
山脉序列中的最大值_在高山脉中启用黑暗模式
查看>>
如何找回忘记的Facebook密码
查看>>
服务主机本地系统占cpu_如何通过“服务主机:本地系统(网络受限制)”解决CPU使用率过高的问题
查看>>
word跟踪修订_如何在Word 2013中使用TaskIt应用轻松跟踪待办事项列表
查看>>
Malwarebytes Anti-Malware 2.0现在可供下载
查看>>
gmail_如何登出Gmail
查看>>
iPhone正在iOS 12中获得分组通知
查看>>
如何修复Windows 7中的“无法访问Windows Installer服务”错误
查看>>
微软word如何插入页码_如何在Microsoft Word中插入,删除和管理超链接
查看>>