`

jsp----监听器

阅读更多
监听器


命名:
   都是Listener所以以Listener结尾
   如果只对生命周期监听: XXListener:如ServletContextListener,HttpSessionListener
   如果要对属性监听: XXAttributeListener:


 是针对于整个Web环境的监听
 主要有以下三类:
    1。ServletContext:对整个应用监听
    2。Session:对Session监听
    3。Request监听
    
    
1。对ServletContext监听    
   在Web端实现监听 = 实现一系列的监听接口
   1.ServletContextListener:对整个Servlet上下文监听(启动,销毁)
      public void contextInitialized(ServletContextEvent sce);上下文初始化
      public void contextDestroyed(ServletContextEvent sce);//上下文销毁
      
      ServletContextEvent事件类:
          public ServletContext getServletContext(); //得到application对象
      
    2 . -----只有getServletContext().setAttribute("aa","bb");这样的东西才起作用
          ServletContextAttributeListener: 对Servlet上下文属性的监听
          public void attributeAdded(ServletContextAttributeEvent scab); 增加属性
          public void attributeRemoved(ServletContextAttributeEvent scab);   
          public void attributeReplaced(ServletContextAttributeEvent acab);  
        ServletContextAttributeEvent  属性事件类:
            public String getName(); //得到属性名称
            public Object getValue(); //得到属性的值
            
  因为Listener与连接无关,所以他只要配置一个
  <listener>
    <listener-class>cn.mldn.listener.ServeletContextDemo</listener-class>
  </listener>    
  
  public class ServletContextDemo
	implements ServletContextListener,ServletContextAttributeListener
{
	private ServletContext application = null ;
	// 实现方法
	public void contextInitialized(ServletContextEvent sce)
	{
		this.application = sce.getServletContext() ;
		System.out.println("** 上下文初始化 ...") ;
		System.out.println("** 当前虚拟目录的绝对路径:"+this.application.getRealPath("/")) ;
	}
	public void contextDestroyed(ServletContextEvent sce)
	{
		System.out.println("** 上下文销毁 ...") ;
	}

	public void attributeAdded(ServletContextAttributeEvent scab)
	{
		System.out.println("** 增加属性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
	public void attributeRemoved(ServletContextAttributeEvent scab)
	{
		System.out.println("** 删除属性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
	public void attributeReplaced(ServletContextAttributeEvent scab)
	{
		System.out.println("** 替换属性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
};
         
      
  上下文监听主要是正对容器的:初始化,销毁,属性操作    
      
二:Session监听
  对Session的创建,销毁,属性操作      
 1. HttpSessionListener:对session整体状况的监听
       public void sessionCreated(HttpSessionEvent e);
       public void sessionDestroyed(HttpSessionEvent e);   
       
       HttpSessionEvent事件:
          public HttpSession getSession();取得当前操作的session
       
  2.HttpSessionAttributeListener:对session属性的监听
        public void attributeAdded(HttpSessionBindingEvent se); //属性增加
        public void attributeRemoved(HttpSessionBindingEvent se);
        public void attributeReplaced(HttpSessionBIndingEvent se)
       
       HttpSessionBindingEvent事件:
          public String getName();
          public String getValue();
          public HttpSession getSession(); 
          
  Session如何销毁
    1。session超时
       需要在web.xml中进行配置
       <session-config>
         <session-timeout>1</session-timeout> //代表一分钟失效
       </session-config>
    2。手工使session失效        
       invalidate();
       
  案例:
     统计当前在线人员(在线人员列表)
   实现那几个接口?
   1.在线人员列表时对所有人都起作用,所有的数据必须保持在application之中,意味着在OnlineDemo中
   必须有一个ServletContext对象
   2。是针对于session的变化进行操作的
     如果登录成功,则将用户名保存在session之中
   3。如果用户注销,则需要对相应的用户名称删除
   
   public class OnLineDemo 
	implements ServletContextListener,HttpSessionListener,HttpSessionAttributeListener
{
	// 声明一个ServletContext对象
	private ServletContext application = null ;
	public void contextInitialized(ServletContextEvent sce)
	{
		// 容器初始化时,向application中存放一个空的容器
		this.application = sce.getServletContext() ;
		this.application.setAttribute("alluser",new ArrayList()) ;
	}

	public void contextDestroyed(ServletContextEvent sce)
	{}

	public void sessionCreated(HttpSessionEvent se)
	{}
	public void sessionDestroyed(HttpSessionEvent se)
	{
		// 将用户名称从列表中删除
		List l = (List)this.application.getAttribute("alluser") ;
		String value = (String)se.getSession().getAttribute("uname") ;
		l.remove(value) ;
		this.application.setAttribute("alluser",l) ;
	}

	public void attributeAdded(HttpSessionBindingEvent se)-----------登录一个就放一个到application.setAttribute("user",user);
	{
		// 如果登陆成功,则将用户名保存在列表之中
		List l = (List)this.application.getAttribute("alluser") ;  //取出List
		l.add(se.getValue()) ;                                    //取出user
		this.application.setAttribute("alluser",l) ;              //在List中存入user  --------因为这三步对于每个用户都是一样的,所以抽取出来
	}
	public void attributeRemoved(HttpSessionBindingEvent se)
	{}
	public void attributeReplaced(HttpSessionBindingEvent se)
	{}
};    
             
分享到:
评论

相关推荐

    jsp-api.jar和servlet-api依赖包

    7. **监听器(Listener)**:监听特定事件,如会话创建、销毁、上下文初始化等,可以进行相应的操作。 ### 集成与应用 在实际开发中,JSP通常用于视图层,Servlet则用于控制层,这种模式被称为MVC(Model-View-...

    jsp-api.jar和servlet-api.jar

    6. **过滤器和监听器** - Servlet API中还包括Filter和Listener接口,它们能增强应用的功能,比如实现登录验证、字符编码转换、会话管理等。 7. **Web容器** - 如Tomcat、Jetty等,它们提供运行Servlet和JSP的环境...

    JSP-config(CHM).rar_java jsp-config_jsp-config

    在这里,你可以配置Servlet、过滤器、监听器等。例如,`jsp-config`元素用于配置JSP页面的相关设置,如默认的编码、错误页面等。 ```xml &lt;jsp-config&gt; &lt;jsp-property-group&gt; &lt;url-pattern&gt;/*.jsp&lt;/url-pattern&gt; ...

    Jsp-扩展-T2_监听器.ppt

    本文档详细介绍了作用域对象、Servlet上下文监听器、Servlet会话监听器、Servlet请求监听器

    精通JSP-Web开发技术与典型应用 光盘代码

    \ch12\* 第12章 使用Servlet2.4过滤器和监听器所有例程代码 \ch13\* 第13章 数据库访问:JDBC所有例程代码 \ch14\* 第14章 用户注册登录模块所有例程代码 \ch15\* 第15章 购物车模块所有例程代码 \ch16\* 第16...

    jsp-api.jar,servlet-api.jar

    4. **ServletContext接口**:提供了对整个Web应用程序的访问,可以获取全局信息或注册监听器。 5. **Filter和FilterChain**:支持过滤器功能,允许开发者在请求到达目标Servlet之前或之后进行拦截和处理。 **标签和...

    servlet-api-2.5.jar以及jsp-api-2.1.jar

    1. **部署描述符**:web.xml文件是Web应用的配置文件,它定义了Servlet、过滤器和监听器的映射,以及其他配置信息。 2. **生命周期**:Servlet具有初始化、服务、销毁三个阶段,JSP在首次被请求时会被转换为Servlet...

    毕业设计论文-IT计算机-tot-jsp-cms-源码.zip

    4. **配置**:如web.xml文件,定义了Web应用的部署描述符,包括Servlet映射、过滤器、监听器等配置。 5. **资源**:如图片、CSS样式表、JavaScript库等,用于提升用户体验。 6. **文档**:可能包含设计文档、用户...

    新闻发布系统(jsp-servlet-javabean)

    6. **Web应用部署**:`web.xml`是Web应用程序的部署描述符,它定义了Servlet的映射、过滤器、监听器等配置,是Spring Boot等现代框架中的`application.properties`或`application.yml`的前身。`src`目录通常包含Java...

    servlet-api-2.5-6.1.9 + jsp-api-2.1

    3. **注解支持(Annotations)**:可以使用注解来配置Servlet、过滤器和监听器,替代传统的web.xml部署描述符。 4. **会话管理**:提供了一套完整的会话跟踪和管理机制。 5. **异步处理**:引入了Asynchronous ...

    dandelion-jsp-0.2.0.zip

    这些扩展可能包含自定义断言、测试规则、测试监听器或者适配器,用于增强标准JUnit的功能,帮助开发者编写更精确、更易维护的测试代码。 结合标签"开源项目",我们可以推测Dandelion JSP和JUnit Extras都是遵循开放...

    servlet-api-2.5.jar和jsp-api-2.1.jar

    6. **监听器**:监听器(Listener)可以监听特定的事件,如会话创建、销毁,或者ServletContext的变化等。 JSP API 2.1是JSP规范的第五个版本,它是用来创建动态HTML页面的Java技术。JSP 2.1的关键特性包括: 1. *...

    Servlet&JSP-PPT.rar

    它是每个Java Web应用程序的核心配置文件,用来定义Servlet、过滤器、监听器、会话超时、错误页面等元素。例如,你可以在这里映射Servlet,设置初始化参数,或者配置安全性相关的设置。熟练掌握web.xml的配置对于...

    jsp-servlet src

    2. `web.xml`:这是一个标准的Web应用部署描述符,定义了应用的配置信息,包括Servlet的映射、过滤器、监听器等。 3. `.java` 文件:这是Servlet和JSP对应的Java源代码文件,可能包括自定义的Servlet类和JSP页面转换...

    tot-jsp-cms毕业设计—(包含完整源码可运行).zip

    - **配置文件**:如web.xml,定义了Servlet、过滤器、监听器等组件的配置,控制应用的启动和运行。 - **资源文件**:如CSS样式表、JavaScript脚本、图片等,用于增强用户体验。 - **其他支持文件**:如数据库连接...

    韩顺平j2ee中的jsp-Servlet的源代码

    - 监听器可以监听服务器、会话、请求和ServletContext等事件。 在韩顺平老师的J2EE课程中,这些概念和实践将会深入讲解,通过源代码学习,你可以更好地理解它们的工作原理,提升J2EE开发能力。通过分析提供的源...

    jsp过滤器与监听器

    jsp过滤器与监听器,很好的讲课和学习的ppt

    监听器实例jsp编写望大家喜欢

    在本示例中,“监听器实例jsp编写望大家喜欢”这个项目,显然涉及到如何在JSP(JavaServer Pages)中使用监听器来实现特定功能。下面我们将深入探讨这一主题。 首先,我们需要了解什么是监听器。在Java Web中,监听...

    基于jsp-servlet的客户管理系统CRM.zip

    8. **过滤器(Filter)和监听器(Listener)**:这些是Java Web的高级特性,过滤器可以对请求和响应进行预处理和后处理,比如登录检查;监听器可以监听特定事件,如用户的登录登出。 9. **Eclipse或IntelliJ IDEA...

    Use-JSP-Bean.zip_site:www.pudn.com

    它们是可重用的组件,具有默认的构造函数、getter和setter方法,以及一些可选的属性,如序列化支持和属性变化监听器。Java Bean在JSP中扮演了数据模型的角色,存储和管理页面的数据。 3. **JSP中的Bean** 在JSP中...

Global site tag (gtag.js) - Google Analytics