文档章节

java servlet拾遗(6)-监听器

haoran_10
 haoran_10
发布于 2016/07/15 16:39
字数 757
阅读 25
收藏 1

「深度学习福利」大神带你进阶工程师,立即查看>>>

在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为  ServletContext ,  HttpSession    ServletRequest  这三个域对象。

 

一、监ServletContext的事件

(1)、ServletContextListener

        监听的事件源是ServletContextEvent,ServletContextListener是"生命周期监听器",如果想要知道何时Web应用程序已经初始化或即将结束销毁,可以实现ServletContextListener:

package javax.servlet;  
import java.util.EventListener;  
public interface ServletContextListener extends EventListener {  
    public void contextInitialized(ServletContextEvent sce);   //web应用启动初始化时调用,比如数据库的连接等,
    public void contextDestroyed(ServletContextEvent sce); //web应用结束销毁前调用,用来做资源的释放,比如释放数据库的连接
}

 

 

而传入的事件中包含ServletContext,通过ServletContextEvent event.getServletContext()获取

例如:

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
 
@WebListener()  
public class MyContextListener implements ServletContextListener {  
    @Override  
    public void contextInitialized(ServletContextEvent sce) {  
        ServletContext servletContext = sce.getServletContext();  
        //对servletContext做初始化处理
    }
    @Override  
    public void contextDestroyed(ServletContextEvent sce) {
     
    }  
}

 

(2)、ServletContextAttributeListener

 

监听的事件源是ServletContextEvent

ServletContextAttributeListener是"监听属性改变的监听器",如果想要对象被设置、移除或替换ServletContext属性,可以收到通知以进行一些操作,则可以实现ServletContextAttributeListener。

package javax.servlet;  
import java.util.EventListener;  
public interface ServletContextAttributeListener extends EventListener{  
    public void attributeAdded(ServletContextAttributeEvent scab);  
    public void attributeRemoved(ServletContextAttributeEvent scab);  
    public void attributeReplaced(ServletContextAttributeEvent scab);  
}

 

当在ServletContext中添加属性、移除属性或替换属性时,相对应的attributeAdded()、attributeRemoved()与attributeReplaced()方法就会被调用。

如果希望容器在部署应用程序时,实例化实现ServletContextAttributeListener的类并注册给应用程序,同样也是在实现类上标注@WebListener(其他事件也是加上此注解,并实现相应的接口即可),并实现ServletContextAttributeListener接口,也可以配置在web.xml中

 

 

二、监听HttpSession的事件 

 

(1)、HttpSessionListener

HttpSessionListener是"会话生命周期监听器",如果想要在HttpSession对象创建或结束时,做些相对应动作,则可以实现HttpSessionListener。

 

(2)、HttpSessionAttributeListener

HttpSessionAttributeListener是"会话属性改变监听器",当在会话对象中加入属性、移除属性或替换属性时,相对应的attributeAdded()、attributeRemoved()与attributeReplaced()方法就会被调用,并分别传入HttpSessionBindingEvent。

 

(3)、HttpSessionBindingListener

HttpSessionBindingListener是"会话对象绑定监听器",如果有个即将加入HttpSession的属性对象,希望在设置给HttpSession成为属性或从HttpSession中移除时,可以收到HttpSession的通知,则可以让该对象实现HttpSessionBindingListener接口。

 

(4)、HttpSessionActivationListener

八辈子用不到。。。


 

三、监听ServletRequest 的事件

(1)、ServletRequestListener

ServletRequestListener是"请求生命周期监听器",如果想要在HttpServletRequest对象生成或结束时做些相对应的操作,则可以实现ServletRequestListener。如果做为servletRequest对象的修改。

 

(2)、ServletRequestAttributeListener

ServletRequestAttributeListener是"属性改变监听器",在请求对象中加入属性、移除属性或替换属性时,相对应的attributeAdded()、attributeRemoved()与attributeReplaced()方法就会被调用,并分别传入ServletRequestAttributeEvent。

ServletRequestAttributeEvent有个getName()方法,可以取得属性设置或移除时指定的名称,而getValue()则可以取得属性设置或移除时的对象。

 

 

(3)、AsyncListener

这个略叼。下个篇幅在完善吧。

 

haoran_10
粉丝 27
博文 89
码字总数 82446
作品 0
杭州
程序员
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.5K
8
mvc框架--Razor

Razor 是一个轻巧而优雅的servlet mvc框架 # 又一个轮子? no,写就她是为了证实我个人的某些想法,并在这个过程中练练手,这两种冲动碰撞在一起,自然而然地产生了Razor # Razor的现在和未来...

dtubest
2013/01/25
3.1K
0
研究虚拟机--Jikes RVM

Jikes研究虚拟机(Jikes Research Virtual Machine,简称Jikes RVM)是一种成熟的用于执行Java程序的虚拟机,其早期版本与当前版本分别在通用公共许可证(CPL)与Eclipse公共许可证(EPL)下开...

匿名
2013/02/13
1.1K
0
Swing界面分析和调试工具--Swing Inspector

Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似,具有强大的Swing/AWT用户界面分析和调试相关功能。 适用于从java swing初级到高级的所有开发人员,能够快速...

匿名
2013/03/06
3.4K
0
自定义表单系统--FormDesign

是基于 FLEX 开发的一款B/S的自定义表单系统 整个过程如下: 1、通过FormDesign自定义表单画出相应的表单; 2、将生成好的XML放到程序中,并通过后台自动编译成JSP; 注:FormDesing只是自定...

polliwog
2013/03/29
1.6W
1

没有更多内容

加载失败,请刷新页面

加载更多

创建myBatis项目

1、简介 1.1、核心组件 SqlSessionFactoryBuilder(构造器):根据配置信息或者代码生成SqlSessionFactory SqlSessionFactory(工厂接口):依靠工厂来生成SqlSession(会话) SqlSession(会话): ...

执键走天涯
25分钟前
5
0
Tomcat集群带来的问题和解决思路

Tomcat集群 存在问题 解决方案 基于Redis+Cookie+Jackson+Filter的原生解决集群Session共享问题 使用Spring Session零侵入解决Session共享 单点登录实现 Redis构建Session服务器 使用Redis+C...

code-ortaerc
45分钟前
17
0
小福利

点击有福利 本文分享自微信公众号 - V5codings(gh_c1ec2d16ec93)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

V5codings
2019/11/19
0
0
ubuntu 安装 oh my zsh

https://github.com/ohmyzsh/ohmyzsh https://ohmyz.sh/#install 安装 sudo apt-get install zsh -ysh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh ......

阿豪boy
57分钟前
7
0
自然语言处理中的语言模型简介

作者|Devyanshu Shukla 编译|Flin 来源|medium 在这篇文章中,我们将讨论关于语言模型(LM)的所有内容 什么是LM LM的应用 如何生成LM LM的评估 介绍 NLP中的语言模型是计算句子(单词序列)...

人工智能遇见磐创
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部