Servlet复习(三)监听器

意义:一但发生什么(服务器或者客户端),服务器做出相应的动作。

内容:1.创建实现了具体接口的类表示监听器。2.使用xml部署描述符或者注解(推荐注解)让servlet容器找到监听器。

常用接口和实例:

一。ServletContext级别的监听器:

1)ServletContextListener对ServletContext的初始化和卸载做出响应(具体的响应可以自己写),其中初始化的时候调用ServletContextListener接口的contextInitialized方法。相应的卸载就调用contextDestroyed方法。两个方法的参数都是java.servlet.ServletContextEvent类,它实现了的java.util.EventObject接口。可以使用这个参数的方法getServletContext()获得servletContext实例。

具体事例:

监听器:

import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class AppListener implements ServletContextListener{

	public void contextDestroyed(ServletContextEvent event){
		
	}
	
	public void contextInitialized(ServletContextEvent event){
		ServletContext sc = event.getServletContext();
		Map<String,String> yuege = new HashMap<String, String>();
		yuege.put("yuege1", "yuege1");
		yuege.put("yuege2", "yuege2");
		sc.setAttribute("yueges", yuege);
	}
}
当tomcat启动后,servletContext得到初始化,接口做出相应的动作。

使用jsp访问属性:

<%@page import="java.util.Map"%>
<html>
  <head>
    <title>My JSP 'yueges.jsp' starting page</title>
  </head>
  
  <body>
   <%
   Map<String,String> yueges = (Map)application.getAttribute("yueges");
   out.println(yueges);
    %>
  </body>
</html>

2)ServletContextAttributeListener对ServletContext的添加删除替换属性是做出相应的方法:attributeAdded(ServletConetxtAttributeEvent event),attributeRemoved(ServletConetxtAttributeEvent event),attributeReplaced(ServletConetxtAttributeEvent event),和1)ServletContextListener类似,ServletConetxtAttributeEvent继承了ServletConetxtAttribute,通过getName和getValue获得属性名称和值。

二。Session级别的监听器:

1)HttpSessionListener

类似于上面,有session创建和卸载相对应的方法:sessionCreated(HttpSessionEvent even),sessionDedtroyed(HttpSessionEvent even),以及HttpSessionEvent的get Session()。

2)HttpSessionAttributeListener

类似于ServletContextAttributeListener。方法:attributeAdded(HttpSessionBindingEvent event),attributeRemoved(HttpSessionBindingEvent event),attributeReplaced(HttpSessionBindingEvent event),相应的HttpSessionBindingEvent 的方法getName()和getValue获得session的名称和值。

3)HttpSessionActivationListener略,不常用。

4)HttpSessionBindingListener

作用于于类,我们知道session就是Map对象,当需要知道一个类放进或者移除session的时候需要得到通知,这个时候我们就需要使这个类实现这个借口,并且在这个类中事项两个放和除对应的方法:valueBound(HttpSessionBindingEvent enent)和valueUnBound(HttpSessionBindingEvent enent)。

三。ServletRequest监听器

1)ServletRequestListener

类似的借口,类似的方法:requestInitialized(ServletReuqestEvent event),requestDestroyed(ServletReuqestEvent event),类似的的时间放回request的方法:

getServletRequest()。这个时间还可以返回ServletContext的getServletContext()的方法。

2)ServletRequestListener

类似的attributeAdded(ServletRequestAttributeEvent event),attributeRemoved(ServletRequestAttributeEvent event),attributeReplaced(ServletRequestAttributeEvent event),相应的ServletRequestAttributeEvent 的方法getName()和getValue获得名称和值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值