属性监听器

域对象中属性变更的事件监听器用来监听ServletContext、HttpSession和HttpServletRequest这三个对象中的属性变更信息事件的监听器。这三个监听器接口分别是ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中属性的增加、删除和替换事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。

因此这里仅以HttpSessionAttributeListener为例展示该类监听器的使用方法;

HttpSessionAttributeListener 接口

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

public class SessionAttributeListener implements HttpSessionAttributeListener {

	//session属性添加时执行
	public void attributeAdded(HttpSessionBindingEvent arg0) {
		System.out.println("Session attributeAdded");
	}

	//session属性更改时执行
	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		System.out.println("Session attributeRemoved");
	}

	//session属性删除时执行
	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		System.out.println("Session attributeReplaced");
	}

}

SessionAttributeListener实现HttpSessionAttributeListener接口中的三个方法;每个方法中写入输出语句输出该方法的方法名;紧接着配置web.xml文件:

  <listener>
  	<listener-class>online.yangxinbiao.SessionAttributeListener</listener-class>
  </listener>

然后再分别创建三个jsp文件,这里以set.jsp、replace.jsp、remove.jsp为例;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<%session.setAttribute("name","Tom"); %>
	</body>
</html>

上段代码是set.jsp的代码,因为replace.jsp的代码只需将 <%session.setAttribute("name","Tom"); %> 换成 <%session.setAttribute("name","Jerry"); %> ,而remove.jsp则是换成 <%session.removeAttribute("name"); %>;因此不再一一给出;注意:替换操作其实就是给原来存在的key值存入一个新的value值,如果已经点击了set链接,再点击set链接得到的结果和点击set链接后直接点击replace链接显示的效果是相同的;

当然还需要一个jsp来关联以上三个jsp,这里以index.jsp为例;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<a href="./set.jsp">set</a>
		<br>
		<a href="./replace.jsp">replace</a>
		<br>
		<a href="./remove.jsp">remove</a>
	</body>
</html>

之后我们再访问index.jsp,分别点击set、replace、remove链接,即可在控制台显示我们监听session对象属性变更时的效果。

发布了99 篇原创文章 · 获赞 3 · 访问量 1241

猜你喜欢

转载自blog.csdn.net/qq_44971038/article/details/103765305