JSP监听器专题
JavaScript的事件监听知识点
JavaScript的事件监听知识点JavaScript是一种广泛应用于网页开发的脚本语言,通过JavaScript 编写的代码可以为网页添加丰富的交互功能。
而事件监听(Event Listening)是JavaScript中非常重要的概念之一,在实现网页交互的过程中起到了至关重要的作用。
1. 事件监听的概念事件监听是指通过编写JavaScript代码来监听特定的事件,并在事件发生时执行相应的动作。
事件可以是用户在网页上的操作,也可以是网页本身所具备的行为,如页面加载完成、鼠标点击、键盘按下等等。
2. 事件监听的基本语法在JavaScript中,可以使用addEventListener方法向指定的元素添加事件监听器。
方法的基本语法如下:```javascriptelement.addEventListener(event, function, useCapture);```- element:表示要监听事件的元素- event:表示要监听的事件名称,如"click"、"load"、"keydown"等 - function:表示事件触发时所执行的函数- useCapture(可选):表示事件是否在捕获阶段进行处理,默认为false(在冒泡阶段处理)例如,要为一个按钮添加点击事件监听:```javascriptvar button = document.getElementById("myButton");button.addEventListener("click", function() {// 点击事件发生时执行的代码});```3. 事件传递的阶段在HTML DOM中,事件传递(Event Propagation)分为冒泡阶段和捕获阶段。
冒泡阶段表示事件从最具体的元素开始逐级向上传播,而捕获阶段则相反,从最顶层元素开始逐级向下传播。
8种监听器分别是:
8种监听器分别是:
1.监听器⽤来监听web程序中的事件,例如创建、修改、删除session、request、context等。
想要实现监听器的功能需要实现监听器的接⼝xxxLinetener,当Tomcat触发监听器的时候,会⾃动调⽤。
监听器可以分为四种类型:
1.监听对象的创建:
ServletContext:主要监听servletContext的创建,需要实现ServeltContextListener接⼝。
ServletRequest:主要监听request的创建,需要实现ServletRequestListener接⼝
HttpSession:主要监听session的创建,需要实现HttpSessionListener接⼝
2.监听属性的改变:
ServletContext:主要监听servletContext属性的更改、添加、删除,需要实现ServeltContextAttrbuteListener接⼝。
ServletRequest:主要监听request属性的更改、添加、删除,需要实现ServletRequestAttrbuteListener接⼝
HttpSession:主要监听session属性的更改、添加、删除,需要实现HttpSessionAttrbuteListener接⼝
3.监听session的活化与钝化:
httpSessionActivationListener主要监听了session的活化与钝化
4.监听session与对象的绑定:
httpSessionBindingListener监听了session与对象的绑定。
J2EE Struts框架课程设计实训项目《BBS论坛系统》——在项目中应用Hibernate中的监听器和拦截器等组件技术
基于J2EE Struts框架的课程设计实训项目——《BBS论坛系统》——在项目中应用Hibernate中的监听器和拦截器等组件技术1.1.1应用Hibernate中的监听器(事件)1、Hibernate中的监听器(1)主要的作用该事件系统可以用来替代拦截器,也可以作为拦截器的补充来使用;而且Session接口的每个方法都有相对应的事件。
比如 LoadEvent,FlushEvent等等(可以查阅XML配置文件的DTD,以及org.hibernate.event包来获得所有已定义的事件的列表)。
因此,可以应用Hibernate中的监听器来生成审计日志,审计主要是对数据库中重要数据的更新历史进行记录。
数据库系统所提供的触发器技术也可以用于生成审计日志,但是它不支持跨数据库平台,所以一般用Hibernate中的监听器。
(2)org.hibernate.event包中所定义的各个事件类(3)事件的产生和激活当某个方法被调用时,Hibernate Session会生成一个相对应的事件并激活所有配置好的事件监听器。
系统预设的监听器实现的处理过程就是被监听的方法要做的(被监听的方法所做的其实仅仅是激活监听器,“实际”的工作是由监听器完成的)。
当然,开发者也可以自由地选择实现一个自己定制的监听器(比如,实现并注册用来处理处理LoadEvent的LoadEventListener接口),来负责处理所有的调用Session的load()方法的请求。
(4)对事件监听器的编程要求事件监听器应该被看作是单例(singleton)对象,也就是说,所有同类型的事件的处理共享同一个事件监听器实例,因此在事件监听器类中不应该保存有任何状态(也就是不应该使用成员变量)。
(5)事件监听器的编程方法1)用户定制的监听器应该实现与所要处理的事件相对应的接口,或者从一个合适的基类继承(甚至是从Hibernate自带的默认事件监听器类继承)。
课件:10.Listener监听器
与session中的绑定的对象相关的监听器(对象感知监听器) (1)即将要被绑定到session中的对象有几种状态
• ServletContext域的生命周期 • 何时创建:服务器启动 • 何时销毁:服务器关闭
监听器的编写步骤(重点):
• 一、编写一个监听器类去实现监听器接口 • 二、覆盖监听器的方法 • 三、需要在web.xml中进行配置---注册
ServletContextListener监听器的主要作用
• 一、初始化的工作:初始化对象 初始化数据 加载数据库驱动 连接池的初始化
• 二、加载一些初始化的配置文件 • spring 的配置文件
• 三、任务调度 ----定时器
监听Httpsession域的监听器
• 监听器HttpSessionListener
• 1)HttpSession对象的生命周期 • 何时创建: request.getSession()
– 就是该客户端没有session就创建一个新的
• 何时销毁:
– 过期时间 默认30分钟 – 服务器关闭 – 手动销毁
监听ServletRequest域的监听器
• 监听器ServletRequestListener
• 1)ServletRequest的生命周期 • 创建:
• 销毁:
监听三大域对象的属性变化的
绑定与解绑的监听器HttpSessionBindingListener
监听器HttpSessionActivationListener
跟我学J2EE Web监听器组件——监听Web容器启动和关闭的应用实例
1.1监听Web容器启动和关闭的应用实例1、应用功能的要求通过监听Web容器启动关闭的事件,在事件发生时记录Web应用程序启动和关闭的系统日志,以便系统管理员通过这个日志查看Web应用程序的启动和关闭情况。
2、实现的原理性的程序代码示例package com.px1987.weblistener;…import java.io.*;import java.util.*;import java.text.SimpleDateFormat;public class ServerStartListener extends HttpServlet implements ServletContextListener{public void contextInitialized(ServletContextEvent sce){GregorianCalendar cal = new GregorianCalendar();int year = cal.get(Calendar.YEAR); //得到当前年份int month = cal.get(Calendar.MONTH)+1; //得到当前月份File file = new File("log_"+year+"_"+month+".xls");FileWriter fw = null;try{//如果文件存在,日志追加到文件末尾,否则创建新的文件fw = new FileWriter(file,true);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String starttime = sdf.format(new Date());fw.write("于"+starttime+"启动Web容器\n");}catch (IOException ex){ex.printStackTrace();}finally{try{if (fw != null){fw.close();}} catch (IOException ex1){ex1.printStackTrace();}}}…}。
跟我学J2EE Web监听器组件——Web监听器组件技术及应用实例
1.1Web监听器组件技术及应用实例1.1.1Web监听器组件技术概述1、Web监听技术(1)Web监听器组件技术在Web应用中,可以部署一些特殊的Servlet类,通过它们从而实现对Web应用中的上下文信息、会话信息等的监听,最终实现在后台自动地完成某些特定的应用功能(2)为什么要提供Web监听器通过对这些信息的监听,从而可以在服务器的后台自动启动某些程序,完成一些特殊的应用。
2、Web应用的生命周期事件(1)Web应用程序生命周期事件当Servlet Contexts和Sessions被初始化或释放时,以及当向Servlet Contexts或Session 上添加或删除属性的时候,容器都将自动地通知对这些进行监听的“listener”对象。
Servlet生命周期事件与Java GUI中Swing的事件机制类似。
(2)生命周期事件的监听器接口的具体应用1)如果希望让应用系统的程序监听Web应用的启动和停止事件,则需要实现ServletContextListener接口;2)如果希望让应用系统的程序去监听Session的创建和失效事件,则需要实现HttpSessionListener接口3、与Web应用的生命周期事件有关的两个接口(1)ServletContextListener接口中的方法(2)ServletContextAttributesListener接口中的方法4、ServletContextListener接口中的方法(1)void contextInitialized(ServletContextEvent e)方法该方法在Web应用程序第一次准备处理Requests请求的时候(例如:Web Server启动并且ServletContext被加载和重新加载时)被执行。
本方法返回之前不能够处理Http Requests请求(2)void contextDestroyed(ServletContextEvent e)该方法在Web应用程序要被关闭的时候(例如:当Web Server关闭或当一个ServletContext 被移去或重新加载的时候) 被执行。
面试题:filter过滤器listener监听器案例有点用
⾯试题:filter过滤器listener监听器案例有点⽤1、Filter⼯作原理(执⾏流程)当客户端发出Web资源的请求时,Web服务器根据应⽤程序配置⽂件设置的过滤规则进⾏检查,若客户请求满⾜过滤规则,则对客户请求/响应进⾏拦截,对请求头和请求数据进⾏检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。
请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向客户机发回⼀个响应。
当资源处理器完成了对资源的处理后,响应信息将逐级逆向返回。
同样在这个过程中,⽤户可以修改响应信息,从⽽完成⼀定的任务。
上⾯说了,当⼀个请求符合某个过滤器的过滤条件时该请求就会交给这个过滤器去处理。
那么当两个过滤器同时过滤⼀个请求时谁先谁后呢?这就涉及到了过滤链FilterChain。
所有的奥秘都在Filter的FilterChain中。
服务器会按照web.xml中过滤器定义的先后循序组装成⼀条链,然后依次执⾏其中的doFilter()⽅法。
执⾏的顺序就如下图所⽰,执⾏第⼀个过滤器的chain.doFilter()之前的代码,第⼆个过滤器的chain.doFilter()之前的代码,请求的资源,第⼆个过滤器的chain.doFilter()之后的代码,第⼀个过滤器的chain.doFilter()之后的代码,最后返回响应。
先请求1,2 但是执⾏放⾏后反过来执⾏2,1这⾥还有⼀点想补充:⼤家有没有想过,上⾯说的“执⾏请求的资源”究竟是怎么执⾏的?对于“执⾏第⼀个过滤器的chain.doFilter()之前的代码,第⼆个过滤器的chain.doFilter()之前的代码”这些我可以理解,⽆⾮就是按顺序执⾏⼀句句的代码,但对于这个“执⾏请求的资源”我刚开始却是怎么也想不明⽩。
其实是这样的:通常我们所访问的资源是⼀个servlet或jsp页⾯,⽽jsp其实是⼀个被封装了的servlet,于是我们就可以统⼀地认为我们每次访问的都是⼀个Servlet,⽽每当我们访问⼀个servlet时,web容器都会调⽤该Servlet的service⽅法去处理请求。
JSP技术中监听器组件应用及实例分析
改 变 时 .S rl 容 器 就 会 产生 相 应 的 事件 ,S rl 监 听 器 就是 ev t e ev t e
用 来 接收 和 处理 S rlt 器 产生 的 这些 事 件 的 。 eve 容
受 的对 象 ,应 用 程 序 已经 被 载 出 。
性改 变 的 事件 .包 括 :增 加 属性 、删 除 属性 、修 改 属 性 等 。监
听 器 类 需 要 实 现 ivxs rlt eveC ne t t b tLs n r接 aa . ve. rlt o txAtiue it e e S r e
口
E et v n 类
S v eCo tx Ev n er lt ne t e t
S rlt o txA tb tL s n r接 口方 法 : eveC ne t t iue it e r e
S rtt e v eCon e t ti u e se e t x Atrb t Litn r
Htp e so Lit n r t S s i n se e
Se v eConexAtr tEv n r lt t t ti e e t bu
S rlt o txEv n eveC ne t e t巾的方 法 :
在 S rl 24 r 共 有 8个 监 听 器 ,根 据 监 听 器 昕 监 听 对 象 ev t. } e l
的 类 型 和 范 嗣 .可 以 分 为 3类 :S rlt o tx 事 件 监 听 器 、 eveC ne t HTF S sin 事 件 监 听 器 和 S rlt q et事 件 监 听 器 。 ' es P o eveRe u s
S rl 24, 所有 监 听 器的 分 类情 况 如 表 l 示 。 ev t. t e r 所
JSP中的监听器
JSP中的监听器JSP中的监听器JSP中的监听器主要有以下三类:Ⅰ、生命周期监听器——可以在对象生成到被窗口销毁前,监听对象生命周期的状态改变,包括:ServletContextListener(这个图弄的我相当烦躁呀。
下面两个接口中的方法几乎和这是一样的,只是把context换成了request和session就O了)ServletRequestListener HttpSessionListenerⅡ、属性操作监听器——我们都知道在servlet中有三个类型的对象可以设置属性:ServletContext, ServletRequest,HttpSession。
我们可以对其添加,删除和更新属性,则其对应的监听器接口及其方法声明如下:ServletContextAttributeListener(其它两个接口的方法名称一样,只是事件类型是相应的类型而已。
)ServletRequestAttributeListener HttpSessionAttributeListener注:以上两种监听器都要在web.xml中进行声明,声明形式如下:<web-app …><listener><listener-class>类的全限定名</listener-class></listener>…</web-app>Ⅲ、会话属性类监听器——这种类型的监听器不用在web.xml中进行声明包括:HttpSessionBindingListener HttpSessionActivationListener。
如何在JavaScript中添加事件监听器
如何在JavaScript中添加事件监听器在JavaScript中,我们可以使用事件监听器来监听特定的事件并执行相应的操作。
事件通常是用户与页面交互时触发的,例如点击按钮、移动鼠标、输入文本等。
通过添加事件监听器,我们可以对这些事件做出响应,以实现交互性和实用性的网页应用。
以下是如何在JavaScript中添加事件监听器的详细步骤:1.选择要添加事件监听器的HTML元素:通过JavaScript,我们可以通过使用各种选择器方法(例如`getElementById`、`getElementsByClassName`、`getElementsByTagName`等)来选择我们希望添加事件监听器的HTML元素。
这些方法可以根据元素的ID、类名、标签名称等属性来选择元素。
2.创建一个事件监听器函数:在JavaScript中,我们需要为要监听的事件创建一个函数,当事件被触发时,该函数将被执行。
这个函数可以包含任何你想要执行的代码。
例如,如果你希望在点击按钮后显示一个警告框,你可以在这个函数中编写代码来实现它。
3.添加事件监听器:一旦你选择了要添加事件监听器的HTML元素并创建了事件监听器函数,你可以使用`addEventListener`方法来将事件监听器附加到元素上。
这个方法有三个参数:事件类型、事件监听器函数和可选的布尔值(默认为false)。
事件类型是一个字符串,描述了要监听的事件的类型,例如'click'、'mousemove'等。
下面是一个具体的示例,展示了如何在JavaScript中添加事件监听器:```javascript//选择要添加事件监听器的HTML元素const button = document.getElementById('myButton');//创建一个事件监听器函数function handleClick() {alert('按钮已点击!');}//添加事件监听器button.addEventListener('click', handleClick);```在这个示例中,我们首先通过使用`getElementById`选择器来选择具有ID为`myButton`的按钮。
java 监听器应用场景及实例代码
一、Java 监听器的概念及作用Java 监听器是一种回调机制,用于在特定事件发生时,通知相关的监听器进行相应操作。
在Java开发中,监听器的应用广泛,可以用于各种事件的处理,例如用户界面的操作、网络通信的状态变化、数据模型的变化等。
通过监听器,可以实现模块间的解耦,提高代码的灵活性和可维护性。
二、Java 监听器的实现方式在Java中,监听器的实现主要依靠接口和事件对象。
通常会定义一个监听器接口,该接口包含事件处理方法;然后通过事件源注册监听器对象,并在事件发生时调用相应的监听器方法来处理事件。
在实际应用中,可以通过实现监听器接口,自定义事件对象,注册监听器等方式来实现监听器功能。
三、Java 监听器的应用场景1.用户界面交互在用户界面交互的场景下,可以通过监听器来处理按钮点击、菜单选择、鼠标移动等各种事件。
当用户点击按钮时,可以通过注册按钮监听器来处理按钮点击事件,触发相应的业务逻辑。
2.网络通信状态变化在网络通信的应用中,可以通过监听器来处理网络连接状态变化、数据接收等事件。
当网络连接建立时,可以触发连接监听器来处理连接成功事件,执行相关的数据传输操作。
3.数据模型变化在数据模型的应用中,可以通过监听器来处理数据对象的状态变化、属性修改等事件。
当数据对象的某个属性发生变化时,可以触发监听器来处理属性修改事件,更新相关的界面显示。
四、Java 监听器的实例代码以下是一个简单的Java监听器实例代码,用于实现按钮点击事件的处理。
```javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;public class ButtonListenerExample {public static void m本人n(String[] args) {JFrame frame = new JFrame("Button Listener Example"); JButton button = new JButton("Click Me");button.addActionListener(new ActionListener() {Overridepublic void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "Button Clicked");}});frame.add(button);frame.setSize(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);}}```以上代码创建了一个简单的Swing窗口应用,包含一个按钮组件,当用户点击按钮时,会弹出一个消息框提示按钮被点击。
监听器(Listener)
监听器(Listener)监听器是针对整个WEB环境的监听,包括客户端的请求、服务端的操作等;主要有三类:-Interface ServletContextListener-Interface HttpSessionListener-Interface ServletRequestListener以上接口全部继承自接口:extendsjava.util.EventListener一、ServletContext监听1.Interface ServletContextListener对整个Servlet上下文监听(启动、销毁)方法:-void contextInitialized(ServletContextEvent sce) 上下文初始化,-void contextDestroyed(ServletContextEvent sce)上下文销毁,其中Class ServletContextEvent-public ServletContext getServletContext()取得一个ServletContext对象2.Interface ServletContextAttributeListener对Servlet上下文属性进行监听方法:-void attributeAdded(ServletContextAttributeEvent event)-void attributeRemoved(ServletContextAttributeEvent event)-void attributeReplaced(ServletContextAttributeEvent event)其中Class ServletContextAttributeEvent-public String getName():取得属性名称-public Object getValue():取得属性的值public class ServletContextDemo implements ServletContextListener,ServletContextAttributeListener{private ServletContext application=null;public void contextInitialized(ServletContextEvent arg0) {this.application=arg0.getServletContext();System.out.println("** 上下文初始化 ...") ;System.out.println("** 当前虚拟目录的绝对路径:"+this.application.getRealPath("/")) ;}public void contextDestroyed(ServletContextEvent arg0) {System.out.println("** 上下文销毁 ...") ;}public void attributeAdded(ServletContextAttributeEvent scae) {System.out.println("** 增加属性:"+scae.getName()+" --> "+scae.getValue()) ;}public void attributeRemoved(ServletContextAttributeEvent scae) {System.out.println("** 删除属性:"+scae.getName()+" --> "+scae.getValue()) ;}public void attributeReplaced(ServletContextAttributeEvent scae) {System.out.println("** 替换属性:"+scae.getName()+" --> "+scae.getValue()) ;}} 二、对Session监听对Session的创建、销毁、属性操作在javax.servlet.http 包下:1.Interface HttpSessionListener对Session整体状况的监听方法:-void sessionCreated(HttpSessionEvent se)-void sessionDestroyed(HttpSessionEvent se)其中Class HttpSessionEvent-public HttpSession getSession()2.Interface HttpSessionAttributeListener方法:-void attributeAdded(HttpSessionBindingEvent event-voidattributeRemoved(HttpSessionBindingEvent event)-voidattributeReplaced(HttpSessionBindingEventevent)其中Class HttpSessionBindingEvent-public HttpSession getSession()-public String getName()-public Object getValue()常用来统计当前在线人数。
listener 监听器
J2EE中监听器Listener的应用(转)(2009-07-02 09:37:37)转载分类:spring标签:杂谈本文以二个Listener实例来讲述ServletContext、HttpSession对象生命周期及ServletContext、HttpSession对象中属性变化情况。
实例一:用于监听ServletContext对象生命周期及ServletContext对象中属性的变化情况的监听器ContextListener,分别实现了ServletContextListener,ServletContextAttributeListener接口。
代码如下:package com.hc.znpb.servlet;import javax.servlet.ServletContextAttributeEvent;import javax.servlet.ServletContextAttributeListener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class ContextListener implements ServletContextListener,ServletContextAttributeListener {public void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stubSystem.out.println("【监听到】应用被关闭!");}public void contextInitialized(ServletContextEvent arg0) {// TODO Auto-generated method stubSystem.out.println("【监听到】应用被启动!");}public void attributeAdded(ServletContextAttributeEvent arg0) {// TODO Auto-generated method stubSystem.out.println("【监听到】ServletContext对象中新增一名为" + arg0.getName() + "的属性,其属性值为:" + arg0.getValue());}public void attributeRemoved(ServletContextAttributeEvent arg0) {// TODO Auto-generated method stubSystem.out.println("【监听到】ServletContext对象中一名为" + arg0.getName() + "的属性被删除!");}public void attributeReplaced(ServletContextAttributeEvent arg0) {// TODO Auto-generated method stubSystem.out.println("【监听到】ServletContext对象中一名为" + arg0.getName() + "的属性被更新!");}}实例二:用于监听HttpSession对象生命周期及HttpSession对象中属性的变化情况的监听器SessionListener,分别实现了HttpSessionListener,HttpSessionAttributeListener接口。
JSP监听器用法分析
JSP监听器⽤法分析本⽂实例讲述了JSP监听器⽤法。
分享给⼤家供⼤家参考,具体如下:监听器也叫Listener,是servlet服务的监听器。
它可以监听客户端的请求,服务端的操作等。
⽐如统计在线⽤户数量。
每当增加⼀个HttpSession时,就会触发sessionCreate(HttpSessionEvent se)⽅法,这样就可以给在线⼈数加1.常⽤的监听器接⼝如下:1. ServletContextAttributeListener监听对ServletContext属性的操作。
⽐如增加,删除,修改属性。
2. ServletContextListener监听ServletContext。
当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)⽅法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)⽅法。
3. HttpSessionListener监听HttpSession的操作。
当创建⼀个Session时,激发session Created(HttpSessionEvent se)⽅法;当销毁⼀个Session时,激发sessionDestroyed (HttpSessionEvent se)⽅法。
4. HttpSessionAttributeListener监听HttpSession中的属性的操作。
当在Session增加⼀个属性时,激发attributeAdded(HttpSessionBindingEvent se) ⽅法;当在Session删除⼀个属性时,激发attributeRemoved(HttpSessionBindingEvent se)⽅法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) ⽅法。
JSP中的Filter拦截器和Listener监听器
JSP中的Filter过滤器和Listener监听器1. JSP中的过滤器1.1 什么是过滤器过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。
过滤器可附加到一个或多个servlet 或JSP页面上,并且可以检查进入这些资源的请求信息。
在这之后,过滤器可以作如下的选择:(1)以常规的方式调用资源(即,调用servlet或JSP页面)。
(2)利用修改过的请求信息调用资源。
(3)调用资源,但在发送响应到客户机前对其进行修改。
(4)阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。
1.2 过滤器的基本原理过滤器可以对客户的请求进行处理,处理完成后,它会交给下一个过滤器处理。
这样,客户的请求在“过滤器链”里逐个处理,直到请求发送到目标为止。
例如,某网站里有提交“修改业务数据”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话查看该用户是否有修改权限;对提交的数据进行统一编码。
这两项工作可以在由两个过滤器组成的过滤链里进行处理。
当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。
1.3 过滤器的使用开发Servlet过滤器的步骤如下:(1)编写实现Filter接口的类;(2)在web.xml中配置Filter。
1.3.1 实现Filter接口类Filter接口定义了以下方法:成员描述destory() 由Web容器调用,初始化此Filter。
init(FilterConfig filterConfig) 由Web容器调用,初始化此Filter。
doFilter(ServletRequest request, 具体过滤处理代码,其中FilterChain参数非常重要,允许通ServletResponse response,FilterChain chain) 过当前过滤器时须要调用FilterChain.doFilter()下面示例实现一个权限过滤器,若用户尚未登录(Session中没有保存用户信息),将回到登录页面;若已经登录则继续该请求。
JS中监听事件的几种方法
JS中监听事件的⼏种⽅法指导参数1.onfocus 当input 获取到焦点时触发 // 点击input框时触发2.onblur 当input失去焦点时触发,注意:这个事件触发的前提是已经获取了焦点再失去焦点的时候会触发相应的js3.onchange 当input失去焦点并且它的value值发⽣变化时触发4.onkeydown 在 input中有键按住的时候执⾏⼀些代码5.onkeyup 在input中有键抬起的时候触发的事件,在此事件触发之前⼀定触发了onkeydown事件6.onclick 主要是⽤于 input type=button,当被点击时触发此事件7.onselect 当input⾥的内容⽂本被选中后执⾏⼀段,只要选择了就会触发,不是⾮得全部选中8.oninput 当input的value值发⽣变化时就会触发,不⽤等到失去焦点(与onchange的区别)指导⽤法// 需求:// 识别input框中的内容必须输⼊七位数字且只能是阿拉伯数字否则不符合规范<input type="text" placeholder="请输⼊数字" onchange="number_func()" onkeyup="this.value=this.value.replace(/\D/g,'')" maxlength="7" id="N_F"> <script>function number_func() {var data = document.getElementById('N_F').value;if (data.length < 7){alert("不符合规范")}xalert(data)}</script>。
chap05-过滤器和监听器
当ServletContext对象中属性增加时调用该方 法
当ServletContext对象中属性被删除时调用该 方法 当ServletContext对象中属性值被改变时调用 该方法 Java Web 开发技术 第五章
5.2 监听器 监听器接口(续) HttpSession对象监听器接口
• HttpSessionListener是用来监听会话对象生命周期 的监听器接口 • HttpSessionAttributeListener是用来监听会话对象 属性改变的监听器接口 • HttpSessionBindingListener是用来监听会话对象的 对象绑定监听器接口 • HttpSessionActivationListener是用来监听会话对象 的对象迁移监听器接口
Java Web 开发技术 第五章
5.1 过滤器
过滤器开发步骤 (1)创建一个实现了javax.servlet.Filter接口的类 (2)重写类中的init(FilterConfig filterConfig)方法,该 方法中一般编写初始化Filter需要执行的代码。 (3)重写类中的方法doFilter(ServletRequest request,ServletResponse response,FilterChain chain),该方法中编写实现过滤操作的代码。 (4)重写类中的destroy()方法,大多数简单过滤器为此 方法提供一个空实现。 (5)针对被访问的目标Web组件(Servlet程序或者JSP 页面)注册过滤器,在部署描述文件web.xml中使用 <filter-apping>和<filter>元素对过滤器进行配置。
• (1)<filter>元素 • <filter>元素位于部署描述符文件web.xml的前部, 所有<filter-mapping>、<servlet>或<servletmapping>元素之前。
SpringBoot的listener(监听器)简单使用实例详解
SpringBoot的listener(监听器)简单使⽤实例详解监听器(Listener)的注册⽅法和 Servlet ⼀样,有两种⽅式:代码注册或者注解注册1.代码注册⽅式通过代码⽅式注⼊过滤器@Beanpublic ServletListenerRegistrationBean servletListenerRegistrationBean(){ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean();servletListenerRegistrationBean.setListener(new IndexListener());return servletListenerRegistrationBean;}IndexListener.Java类:package com.example.Listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class IndexListener implements ServletContextListener{@Overridepublic void contextDestroyed(ServletContextEvent arg0) {System.out.println("IndexListener contextDestroyed method");}@Overridepublic void contextInitialized(ServletContextEvent arg0) {System.out.println("IndexListener contextInitialized method");}}2.注解⽅式通过注解⽅式注⼊过滤器IndexListener2.Java类package com.example.Listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;@WebListenerpublic class IndexListener2 implements ServletContextListener{@Overridepublic void contextDestroyed(ServletContextEvent arg0) {System.out.println("IndexListener2 contextDestroyed method");}@Overridepublic void contextInitialized(ServletContextEvent arg0) {System.out.println("IndexListener2 contextInitialized method");}}把注解加到⼊⼝处启动即可@SpringBootApplication@ServletComponentScanpublic class SpringBootSimpleApplication {public static void main(String[] args) {SpringApplication.run(SpringBootSimpleApplication.class, args);}}以上所述是⼩编给⼤家介绍的Spring Boot的listener(监听器)简单使⽤实例详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
JSP学习笔记JSP-6 过滤器,监听器
1.知识点1.1. 上一个章节回顾1.2. 本章重点1.2.1.过滤器1.2.2.监听器2.具体内容2.1.过滤器2.1.1.什么是过滤器2.1.1.1.对某些操作进行筛选和过滤2.1.1.2.可以对web应用程序设置多个过滤器,这些过滤器就组成了一个过滤器链,对某些操作践行检查2.1.1.3.过滤器是可以模块化的2.2.过滤器的创建2.2.1.在创建过滤器的时候必须直接或者间接的实现Filter接口2.2.1.1.2.2.2.配置Filter2.2.2.1.2.3.过滤器可以干什么2.3.1.过滤非法登陆2.3.1.1.不通过登陆界面直接访问内部的一下模块的时候就是非法登陆2.3.1.2.我们发现在过滤的过程中我们把所有的路径都过滤的时候就会出现重定向死循环的情况2.3.1.2.1.2.3.1.3.我们该如何解决2.3.1.3.1.通过设置过滤路径来解决2.3.1.3.2.2.3.1.3.3.2.3.1.4.但是我们又出现了问题,当我们使用ajax 在请求的时候页面并不会进行跳转,那我们如何解决呢?2.3.1.4.1.判断是否是ajax的请求,如果是ajax的请求我们另做处理2.3.1.4.2.2.3.1.4.3.2.3.1.4.4.2.4.监听器2.4.1.监听一些事件用来打到一下功能2.4.2.适用场景2.4.2.1.统计在线人数2.4.2.2.自动加载初始化信息2.4.2.3.统计网站访问量2.4.3.根据监听的对象的分类2.4.3.1.servletContext2.4.3.2.HttpSession2.4.3.3.ServletRequest2.4.4.统计在线人数2.4.4.1.3.本章总结3.1. 面试题答案3.2. 预习下一章内容4.练习题4.1. 作业。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP监听器专题
[整理人:hkebao@ 整理时间:2010-1-21]
一、监听器概述
监听你的web应用,监听许多信息的初始化,销毁,增加,修改,删除值等
Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。
1.Listener是Servlet的监听器
2.可以监听客户端的请求、服务端的操作等。
3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession 时,给在线人数加1。
4.编写监听器需要实现相应的接口
5.编写完成后在web.xml文件中配置一下,就可以起作用了
6.可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪
servlet 规范中为每种事件监听器都定义了相应的接口,在编写事件监听器程序时只需实现这些接口就可以了。
一些Servlet事件监听器需要在web应用程序的部署文件描述符文件(web.xml)中进行注册(注册之后才能发布),一个web.xml可以注册多个servlet事件监听器。
web服务器按照它们在web.xml中注册顺序来加载和注册这些servlet事件监听器。
servlet事件监听器的注册和调用过程都是由web容器自动完成的,当发生被监听对象被创建,修改,销毁等事件时,web容器将调用与之相关的servlet事件监听器对象的相应方法(所监听到的对象如果在创建、修改、销毁事件触发的时候就会调用这些监听器这就相当于面向事件编程的概念),用户在这些方法中编写的事件处理代码(相当于JS中的事件响应)即被执行。
由于在一个web应用程序中只会为每个事件监听器类创建一个实例对象,有可能出现多个线程同时调用一个事件监听对象的情况,所以要注意多线程安全问题。
二、监听器类型
按监听的对象划分:servlet2.4规范定义的事件有三种:
1.用于监听应用程序环境对象(ServletContext)的事件监听器
2.用于监听用户会话对象(HttpSession)的事件监听器
3.用于监听请求消息对象(ServletRequest)的事件监听器
按监听的事件类项划分
1.用于监听域对象自身的创建和销毁的事件监听器
2.用于监听域对象中的属性的增加和删除的事件监听器
3.用于监听绑定到HttpSession域中的某个对象的状态的事件监听器
在一个web应用程序的整个运行周期内,web容器会创建和销毁三个重要的对象,ServletContext,HttpSession,ServletRequest。
PS:其中Context 为JSP页面包装页面的上下文.由容器创建和初始化,管理对属于JSP中特殊可见部分中已命名对象的访问. 该接口用来定义了一个Servlet的环境对象。
也可认为这是多个客户端共享的信息,它与session的区别在于应用范围的不同,session只对应于一个用户。
PS:感觉好像这个对象与ASP中的Application对象是一样的概念。
servlet2.4中定义了三个接口:
ServletContextListener,HttpSessionListener,ServletRequestListener。
分别实现对应的接口就可以实现对应的监听处理
<!--[if !supportLists]-->1. <!--[endif]-->在ServletContextListener接口中定义了两个事件处理方法,分别是
contextInitialized()和contextDestroyed()
public void contextInitialized(ServletcontextEvent sce)
这个方法接受一个ServletContextEvent类型参数,在contextInitialized可以通过这个参数获得当前被创建的ServletContext对象。
public void contextDestroyed(ServletContextEvent sce)
2.在HttpSessionListneter接口中共定义了两个事件处理方法,分别是sessionCreated()和sessionDestroyed()
public void sessionCreated(HttpSessionEvent se)
这个方法接受一个(HttpSessionEvent 类型参数,在sessionCreated可以通过这个参数获得当前被创建的HttpSession对象。
public void sessionDestroyed(HttpSessionEvent se)
3.在ServletRequestListener接口中定义了两个事件处理方法,分别是requestInitialized ()和requestDestroyed()
public void requestInitialized(ServletRequestEvent sre)
这个方法接受一个(ServletRequestEvent 类型参数,在requestInitialized可以通过这个
参数获得当前被创建的ServletRequest对象。
public void requestDestroyed(ServletRequestEvent sre)
可以看出三个监听器接口中定义的方法非常相似,执行原理与应用方式也相似,在web应用程序中可以注册一个或者多个实现了某一接口的事件监听器,web容器在创建或销毁某一对象(如ServletContext,HttpSession)时就会产生相应的事件对象
(如ServletcontextEvent ,或者HttpSessionEvent),接着依次调用每个事件监听器中的相应处理方法,并将产生的事件对象传递给这些方法。
三、分类及介绍
1. ServletContextListener:用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
2. ServletContextAttributeListener:用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性,监听器类需要实现javax.servlet.ServletContextAttributeListener接口。
3. HttpSessionListener:用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。
4. HttpSessionActivationListener:用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet.http.HttpSessionListener接口或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。
5. HttpSessionAttributeListener:用于监听Session对象属性的改变事件,监听器类需要实现javax.servlet.http.HttpSessionAttributeListener接口。
四、部署
监听器的部署在web.xml文件中配置,在配置文件中,它的位置应该在过滤器的后面Servle 的前面
五、示例
5.1 创建一个监听器示例
第一步:编写监听器类
package cn.listen;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent sce) { System.out.println("die");
}
public void contextInitialized(ServletContextEvent sce) { System.out.println("init");
}
}
第二步:布置安装
<listener>
<listener-class>cn.listen.MyListener</listener-class>
</listener>
运行Resin服务器会出现
[20:42:38.406] {main} WebApp[http://default] active
init
[20:42:38.437] {main} WebApp[http://default/MyProj] active
监听到了应用启动。
PS:不清楚什么时候触发contextInitialized事件?。