监听器之Session监听

监听实际上指的是对整个Web中需要的位置上的操作进行的一种监听而已,当发生了某些操作之中会自动的执行一些处理功能。那么怎么进行监听呢?
在监听器里面实际上主要都是针对于属性的监听(request、session、application)。
所谓的session监听主要指的是针对与某一个用户进行的监视。
Session监听主要为:
一、 对session的状态监听,HttpSessionListener
它又分为两个操作,分别是:
Session创建:public void sessionCreated(HttpSessionEvent se);
Session销毁:public void sessionDestroyed(HttpSessionEvent se);
这两个方法里面都存在有HttpSessionEvent事件对象,这个类定义有如下方法:
取得当前session对象:public HttpSession getSession();
例:配置一个简单的监听:

package com.lj.zx;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyListener implements HttpSessionListener {
	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		System.out.println("Session创建+" + arg0.getSession().getId());
	}
	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("Session销毁+" + arg0.getSession().getId());
	}
}

并在web配置,代码十分简单,如下:

  <listener>
    <listener-class>com.lj.zx.MyListener</listener-class>
  </listener>

将项目部署到tomact中,结果如下:
在这里插入图片描述
此时无论如何刷新,结果都是如此。那么如何销毁session呢?销毁Session方法有两种,分别为:

  1. 明确使用invaildate()方法;
    在jsp页面使用invaildate方法,如:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% 
session.removeAttribute("idid");
%>

对页面进行刷新,结果如下:
在这里插入图片描述
2. Session超时时间一到,自动销毁;默认超时时间为30分钟;
在web配置,对session超时时间进行修改:代码如下:

  <session-config>
    <session-timeout>1</session-timeout>
  </session-config>

其默认单位为:“分”
二、 对session的属性监听,HttpSessionAttributeListener;
1.增加session属性:public void attributeAdded(HttpSessionBindingEvent se);
2.替换session属性:public void attributeReplaced(HttpSessionBindingEvent se)
3.删除session属性:public void attributeRemoved(HttpSessionBindingEvent se)
这三个方法都会有一个HttpSessionBindingEvent事件类对象,此类包含如下方法:
① 取得属性的名字:public String getName();
② 取得属性的内容:public Object getValue();
③ 取得session对象:public HttpSession getSession();
例:

package com.lj.zx;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionAttributeListener;

public class MyListener implements HttpSessionAttributeListener {

	public void attributeAdded(HttpSessionBindingEvent arg0) {
		System.out.println("增加属性 id =" + arg0.getSession().getId() +", name=" +arg0.getName() +", value=" +arg0.getValue());
	}

	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		System.out.println("删除属性 id =" + arg0.getSession().getId() +", name=" +arg0.getName() +", value=" +arg0.getValue());
	}

	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		System.out.println("替换属性 id =" + arg0.getSession().getId() +", name=" +arg0.getName() +", value=" +arg0.getValue());
	}

}

Jsp页面代码为:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% 
session.setAttribute("idid", "xxx");
%>

结果为:
在这里插入图片描述
更改jsp页面代码为:session.removeAttribute("idid");
结果如图:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值