JavaWeb监听器

JavaWeb监听器

(本文为小编的读书笔记)

一、监听器的分类

(一)ServletContextListener(相当于监听内置对象Application)和ServletContextAttributeListener(相当于监听内置对象Application属性的添加、删除、和修改)

(二)HttpSessionListener(相当于监听内置对象Session)和HttpSessionAttributeListener(相当于监听内置对象Session属性的添加、删除、和修改)

(三)ServletRequestListener(相当于监听Request)和ServletAttributeRequestListener(相当于监听内置对象Request属性的添加、删除、和修改)

(四)绑定到HttpSession域中的对象状态监听器

二、监听器的执行顺序

(1)监听器——>过滤器——>Servlet

(2)多个监听器按照Web.xml文件配置顺序执行

三、分类中(1)(2)(3)监听器的创建

(一)在Servlet2.5版本下

1.创建一个类,实现对应的借口,例如:

public class FirstListener implements ServletContextListener{
	<span style="color:#000000;background-color: rgb(255, 153, 0);">//实现处理监听Applicaiton的销毁方法</span>
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {    <pre class="java" name="code">		<span style="background-color: rgb(255, 153, 0);">//可以获取Web容器加载时候的初始化参数,在Web.xml文件中配置</span>
		String initparam= arg0.getServletContext().getInitParameter("initparam");
		System.out.println("contextDestroyed...."+initparam);
		
	}
	<span style="background-color: rgb(255, 153, 0);">//实现处理Appication的初始化方法</span>
	@Override
	public void contextInitialized(ServletContextEvent arg0) {   
		System.out.println("contextInitialized");
	}

}

 

public class MyServletContextAttributeListener implements ServletContextAttributeListener {
	//实现处理属性添加的方法
	@Override
	public void attributeAdded(ServletContextAttributeEvent arg0) {
		System.out.println("ContextattributeAdded:"+arg0.getName());
	}
	//实现处理属性移除的方法
	@Override
	public void attributeRemoved(ServletContextAttributeEvent arg0) {
		System.out.println("ContextattributeRemoved:"+arg0.getName());
	}
	//实现处理属性替换的方法
	@Override
	public void attributeReplaced(ServletContextAttributeEvent arg0) {
		System.out.println("ContextattributeRemoved:"+arg0.getName());
	}

}
在Index.jsp中实现测试。
<% 
	request.setAttribute("requestName","requestValue");  //添加Request属性
	request.getSession().setAttribute("sessionName","sessionValue");  //添加Session属性
	request.getSession().getServletContext().setAttribute("contextName","contextValue");  //添加Applicaiton属性
%>

<% 
  	request.removeAttribute("requestName");		//移除Request属性
  	request.getSession().removeAttribute("sessionName"); //移除Session属性
 	request.getSession().getServletContext().removeAttribute("contextName");/移除Application属性
%>

2.在Web.xml配置相应的监听器(只需要指定类名)
<listener>
    <listener-class>具体的包名.类名</listener-class>
  </listener>

(二)在Servlet3.0版本下

加WebListener注解

@WebListener("注释")  //不需要指定类名。

四、分类中(4:绑定到HttpSession域中的对象状态监听器)监听器的创建

(一)对象与监听器绑定与解除绑定(不需要Web.xml文件配置)

1.创建
public class User implements HttpSessionBindingListener {
	private String Username;
	private String Password;
	@Override
	public void valueBound(HttpSessionBindingEvent arg0) {
		// 对象的绑定
	}
	@Override
	public void valueUnbound(HttpSessionBindingEvent arg0) {
		// 对象的解除绑定
	}
	public String getUsername() {
		return Username;
	}
	public void setUsername(String username) {
		Username = username;
	}
	public String getPassword() {
		return Password;
	}
	public void setPassword(String password) {
		Password = password;
	}
}
2.测试
<%
	 request.getSession().setAttribute("user",new User()); //对象的绑定
 	 request.getSession().removeAttribute("user");		//对象的解绑
%>




(二)对象的钝化和活化

1.创建(实现两个接口)
public class User implements HttpSessionActivationListener ,Serializable{
	private String Username;
	private String Password;

	public String getUsername() {
		return Username;
	}
	public void setUsername(String username) {
		Username = username;
	}
	public String getPassword() {
		return Password;
	}
	public void setPassword(String password) {
		Password = password;
	}
	@Override
	public void sessionDidActivate(HttpSessionEvent arg0) {
		// 活化
		
	}
	@Override
	public void sessionWillPassivate(HttpSessionEvent arg0) {
		// 钝化
	}
}
2.测试
(1)当浏览器关闭的时候,对象会被钝化到服务器(Tomcat-work-Catalina-localhost-“项目文件”-SESSION.ser)中;
(2)当浏览器开启时候,又会活化到本地项目中,可以通过Request.getSession().getAttribute("uesr");获得。(SESSION.ser文件会不见)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值