Servlet事件监听器

Servlet事件监听器
Servlet事件监听器

一、概念

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

二、Servle监听器

1、编写 Servlet监听器

(1)和编写其它事件监听器一样,编写servlet监听器也需要实现一个特定的接口,并针对相应动作覆盖接口中的相应方法。(2)和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在web.xml文件中使用标签配置好监听器,web容器就会自动把监听器注册到事件源中。

(3)一个 web.xml文件中可以配置多个 Servlet 事件监听器,web服务器按照它们在web.xml 文件中的注册顺序来加载和注册这些 Serlvet事件监听器。

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

(1)监听servletContext域对象创建和销毁

①ServletContextListener接口用于监听 ServletContext 对象的创建和销毁事件。

ⅰ当 ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法

ⅱ当 ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

②servletContext域对象何时创建和销毁:

ⅰ创建:服务器启动针对每一个web应用创建servletcontext

ⅱ销毁:服务器关闭前先关闭代表每一个web应用的servletContext

(2)监听HttpSession域对象创建和销毁

①HttpSessionListener接口用于监听HttpSession创建和销毁

ⅰ创建一个Session时,sessionCreated(HttpSessionEventse)方法将会被调用。

ⅱ销毁一个Session时,sessionDestroyed (HttpSessionEventse)方法将被调用。

②Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session

销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失效时间

(3)监听HttpRequest域对象创建和销毁

①ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁。

ⅰRequest对象被创建时,监听器的requestInitialized方法将会被调用。

ⅱRequest对象被销毁时,监听器的requestDestroyed方法将会被调用。

②servletRequest域对象创建和销毁的时机:

ⅰ创建:用户每一次访问,都会创建一个reqeust

ⅱ销毁:当前访问结束,request对象就会销毁

3、Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。

(1)监听三个域对象创建和销毁的事件监听器

(2)监听域对象中属性的增加和删除的事件监听器

(3)监听绑定到HttpSession域中的某个对象的状态的事件监听器。

Servlet监听器在开发中的应用案例:

4、监听三个域对象属性变化

(1)Servlet规范定义了监听 ServletContext, HttpSession,HttpServletRequest这三个对象中的属性变更信息事件的监听器。(2)这三个监听器接口分别是ServletContextAttributeListener,HttpSessionAttributeListener ServletRequestAttributeListener

(3)这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。

5、attributeAdded方法

(1)当向被监听器对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象

(2)各个域属性监听器中的完整语法定义为:

ⅰpublic voidattributeAdded(ServletContextAttributeEvent scae)

ⅱpublic void attributeAdded(HttpSessionBindingEvent hsbe)

ⅲpublic voidattributeAdded(ServletRequestAttributeEvent srae)

6、attributeRemoved方法

(1)当删除被监听对象中的一个属性时,web容器调用事件监听器的这个方法进行相应

(2)各个域属性监听器中的完整语法定义为:

①public voidattributeRemoved(ServletContextAttributeE vent scae)

②public void attributeRemoved(HttpSessionBindingE venthsbe)

③public void attributeRemoved(ServletRequestAttributeE vent srae)

7、attributeReplaced方法

(1)当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的这个方法进行相应

(2)各个域属性监听器中的完整语法定义为:

①public voidattributeReplaced(ServletContextAttributeE vent scae)

②public void attributeReplaced(HttpSessionBindingE venthsbe)

③public void attributeReplaced(ServletRequestAttributeE vent srae)

监听器

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

监听器典型案例:监听window窗口的事件监听器

S ervle监听器

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

Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。

监听三个域对象创建和销毁的事件监听器

监听域对象中属性的增加和删除的事件监听器

监听绑定到 HttpSession 域中的某个对象的状态的事件监听器。(查看API文档)

监听servletContext域对象创建和销毁

ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。

当 ServletContext 对象被创建时,激发contextInitialized (ServletContextEvent sce)方法

当 ServletContext 对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

提问,servletContext域对象何时创建和销毁:

创建:服务器启动针对每一个web应用创建servletcontext

销毁:服务器关闭前先关闭代表每一个web应用的servletContext

编写 Servlet 监听器

和编写其它事件监听器一样,编写servlet监听器也需要实现一个特定的接口,并针对相应动作覆盖接口中的相应方

法。

和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发

人员只需在web.xml文件中使用标签配置好监听器,web容器就会自动把监听器注册到事件源中。

一个 web.xml 文件中可以配置多个 Servlet 事件监听器,web 服务器按照它们在 web.xml 文件中的注册顺序来

加载和注册这些 Serlvet 事件监听器。

监听HttpSession域对象创建和销毁

HttpSessionListener接口用于监听HttpSession创建和销毁

创建一个Session时,sessionCreated(HttpSessionEvent se) 方法将会被调用。

销毁一个Session时,sessionDestroyed (HttpSessionEvent se) 方法将会被调用。

Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session

销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失

效时间

ServletRequestListener 接口用于监听ServletRequest 对象的创建和销毁。

Request 对象被创建时,监听器的requestInitialized方法将会被调用。

Request对象被销毁时,监听器的requestDestroyed方法将会被调用。

(此处复习request对象,在浏览器窗口中多次刷新访问servlet,看request对象的创建和销毁,并写一个

servlet,然后用sendRedirect、forward方式跳转到其它servlet,查看request对象的创建和消耗)

servletRequest域对象创建和销毁的时机:

创建:用户每一次访问,都会创建一个reqeust

销毁:当前访问结束,request对象就会销毁

Servlet监听器在开发中的应用案例:统计当前在线人数

[html]view plaincopyprint?

1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

2.String path = request.getContextPath();

3.String basePath =

request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

4.%>

5.

My JSP 'index.jsp' starting page

6.当前网站访问量: ${applicationScope.count }

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+pa %>

My JSP 'index.jsp' starting page

当前网站访问量: ${applicationScope.count }

[java]view plaincopyprint?

1.package com.hbsi.web.listener;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class CountLineListenerimplements HttpSessionListener{

@Override

public void sessionCreated(HttpSessionEvent se) {

2.ServletContext context=se.getSession().getServletContext();

3.Integer count=(Integer) context.getAttribute("count");

if(count==null){

4.count=1;

5.context.setAttribute("count", count);

6.}else{

7.count++;

8.context.setAttribute("count", count);

9.}

10.}

@Override

public void sessionDestroyed(HttpSessionEvent se) {

11.ServletContext context=se.getSession().getServletContext();

12.Integer count=(Integer) context.getAttribute("count");

13.count--;

14.}

15.}

package com.hbsi.web.listener;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class CountLineListener implements HttpSessionListener{

@Override

public void sessionCreated(HttpSessionEvent se) {

ServletContext context=se.getSession().getServletContext();

Integer count=(Integer) context.getAttribute("count");

if(count==null){

count=1;

context.setAttribute("count", count);

}else{

count++;

context.setAttribute("count", count);

}

}

@Override

public void sessionDestroyed(HttpSessionEvent se) {

ServletContext context=se.getSession().getServletContext();

Integer count=(Integer) context.getAttribute("count");

count--;

}

}

[html]view plaincopyprint?

1.

xmlns="https://www.360docs.net/doc/cb8977764.html,/xml/ns/javaee"

xmlns:xsi="https://www.360docs.net/doc/cb8977764.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.360docs.net/doc/cb8977764.html,/xml/ns/javaee

2.https://www.360docs.net/doc/cb8977764.html,/xml/ns/javaee/web-app_2_5.xsd">

com.hbsi.web.listener.CountLineListener

index.jsp

Activiti 监听器的配置使用

Activiti 监听器的配置使用 一)流程监听器的配置 此监听器的作用是记录流程的启动和结束事件日志,详细参考类 cn.bc.workflow.activiti.delegate.ProcessLogListener 用Activiti Designer打开流程图,点击空白处,在Properties的Listeners中如下配置流程的start和end两个事件: 二)任务监听器的配置 此监听器的作用是记录任务的创建、分派和完成的事件日志,详细参考类 cn.bc.workflow.activiti.delegate.TaskLogListener 用Activiti Designer打开流程图,点击要配置的任务节点,在Properties的Listeners中如下配置任务的事件监听:

如下是自动将任务分配到岗位或岗位内用户的任务监听器的配置: 详见类cn.bc.workflow.activiti.delegate.Assign2GroupUserListener,监听器在流程图中需要配置为"java class"类型,Fields参数中有两种配置方式:1)岗位名称+保存组织ID的流程变量名(全局变量),2)岗位编码。 监听器会根据配置方式先获取岗位,然后自动获取岗位内的用户信息,如果岗位内只有一个用户,就直接将任务分配给此用户,否则分配给岗位。

三)流向或网关监听器的配置 此监听器的作用是记录流向的执行事件日志,在平台中是可选的,视具体情况按需配置,详细参考类cn.bc.workflow.activiti.delegate.FlowLogListener 用Activiti Designer打开流程图,点击要配置的流向或网关,在Properties的Listeners 中类似任务监听器的方式进行配置即可:

监听器与过滤器

监听器与过滤器 监听器简介 什么是监听器 1.能监听某个对象的状态变化的组件 2.监听域对象的变化 监听器相关的概念 1.事件源:被监听的对象- request、session、servletContext 2.监听器:监听事件源的对象- 8个监听器 3.注册监听器:监听器与事件源相绑定 4.响应行为:监听到事件源变化时,去做什么事情 监听器划分 1.三个监听域对象的创建与销毁ServletContextListener HttpSessionListener ServletRequestListener 2.三个监听域对象当中属性变化ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener

域监听器 ServletContext域监听器监听ServletContext域的创建与销毁的监听器ServletContextListenerServletContext域生命周期:服务器启动创建、服务器关闭销毁监听器的编写步骤: 1.编写一个监听器类去实现监听器接口 2.覆盖监听器的方法 3.需要在web.xml中进行配置 作用 1.初始化的工作:初始化对象、初始化数据、加载数据库驱动、连接池的初始化 2.加载一些初始化的配置文件 3.任务调度

HttpSessionListener 监听HttpSession域的创建与销毁的监听器HttpSessionListener HttpSession的生命周期:第一次调用request.getSession时创建、服务器关闭session 过期或手动销毁 应用场景:记录访问人数 过滤器介绍 什么是过滤器 1.filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行 2.可以对目标资源访问前后进行逻辑处理 过滤器编写步骤 1.编写一个过滤器的类实现Filter接口 2.实现接口中尚未实现的方法(主要是DoFilter方法)

安卓期末重点复习资料(EK-绝密版)

1、p4 开放手机联盟成员 ①电信运营商 ②半导体芯片商 ③手机硬件制造商 ④软件厂商 ⑤商品化公司 2、p9 Android具有自己的运行时和虚拟机,与java和.Net 运行时不同,Android运行时还可以管理进程的生命周期。Eclipse 3、p10 4、p12 在开始下载和安装Eclipse之前,应该首先确认开发主机上是否已经安装了Java 运行环境JRE 5、p26 DDMS ①Android系统中内置的调试工具 ②监视Android系统中进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和SMS短信,以及浏览Android模拟器

文件系统等 ③启动文件: /tools/ddms.bat (1)DDMS中的设备管理器 同时检控多个Android模拟器,显示每个模拟器中所以正在运行的进程 提供屏幕截图功能 (2)DDMS中的模拟器控制器 控制Android模拟器的网络速度和延迟,模拟语音和SMS短信通信 网络速率:GSM、HSCSD、PRS、EDGE、MTS、DPA和全速率 网络延迟:GPRS、EDGE、UMTS和无延迟 (3)DDMS中的模拟器控制器 电话呼入显示 SMS短信显示 (4)DDMS中的文件浏览器 上传、下载和删除Android内置存储器上的文件 显示文件和目录的名称、权限、建立时间等 (5)DDMS中的日志浏览器(LogCat) 浏览Android系统、Dalvik虚拟机或应用程序产生的日志信息,有助于快速定位应用程序产生的错误 6、p36 根目录包含四个子目录:src、assets、res和gen,一个库文件android.jar,以及两个工程文件Androidmanifest.xml和default.properties (1)src目录是源代码目录,所有允许用户修改的java文件和用户自己添加的java文件都保存在这个目录中 (2)gen目录是1.5版本新增的目录,用来保存ADT自动生成的java文件,例如R.java或AIDL文件 (3)assets目录用来存放原始格式的文件,例如音频文件、视频文件等二进制格

ssh中自定义监听器,拦截器,过滤器

SSH中自定义监听器、拦截器、过滤器 1、自定义监听器 a)自定义监听器有哪些 监听器的定义是在web.xml中完成,其实做过ssh项目的人并不陌生监听器,主要是因为spring提供了监听器就是 org.springframework.web.context.ContextLoa derListener 如果我们想自己定义一个监听器来完成我们自己的特定功能怎么办呢,struts为我们提供了自定义servlet监听器,他们主要有 (1)ServletContextListener Servlet的上下文监听,它主要实现监听ServletContext的创建和删除。该接口提供了两种方法 1.contextInitialized(ServletContextEvent event); 通知正在收听的对象,应用程序 已经被加载和初始化。 2.contextDestroyed(ServletCotextEvent event); 通知正在收听的对象,应用程序 已经被载出,即关闭。 (2)ServletAttributeListener 主要实现监听ServletContext属性的增加,删除和修改。该接口提供了一下3个方法 1.attributeAdded(ServletContextAttributeEvent event); 当有对象加入 Application的范围时,通知正在收听的对象 2.attributeReplaced(ServletContextAttributeEvent event); 当在application的范围有 对象取代另一个对象的时,通知正在收听的对象 3.attributeRemoved(ServletContextAttributeEvent event); 当有对象从application 的范围移除时,通知正在收听的对象 (3)HttpSessionListener HTTP会话监听,该接口实现监听HTTP会话创建、销毁。该接口提供了一下两种方法 1.sessionCreated(HttpSessionEvent event); 通知正在收听的对象,session 已经被加载及初始化 2. sessionDestoryed(HttpSessionEvent event)l 通知正在收听的对象, session已经被载出(HttpSessionEvent类的主要方法是getSession(),可以使用该方法回传一个session对象)

Java+Swing+常用事件和监听器接口

Swing 常用事件和监听器接口 AncestorEvent AncestorListener ancestorAdded(AncestorEvent e) ancestorMoved(AncestorEvent e) ancestorRemoved(AncestorEvent e) CaretEvent 通知感兴趣的参与者事件 源中的文本插入符已经发 生更改 CaretListener caretUpdate(CareEvente) ChangeEvent 通知感兴趣的参与者事件 源中的状态已经发生更改 ChangeListener stateChanged(ChangeEvent e) HyperlinkEvent 通知感兴趣的参与者发生 了与超文本链接有关的事 情 HyperlinkListener hyperlinkUpdate(HyperlinkEvent e) InternalFrameEvent 以事件源的形式添加对J InternalFrame对象的支持的 A WTEvent InternalFrameListener internalFrameActivated(InternalFrameEvent e) internalFrameClosed(InternalFrameEvent e) internalFrameClosing(InternalFrameEvent e) internalFrameDeactived(InternalFrameEvent e) internalFrameDeiconified(InternalFrameEvent e) internalFrameIconified(InternalFrameEvent e) internalFrameOpened(InternalFrameEvent e) ListDataEvent 定义一个列表更改的事件ListDataListener contentsChanged(ListDataEvent e) intervalAdded(ListDataEvent e) intervalRemoved(ListDataEvent e)

servlet+JSP实现用户登录功能

servlet+JSP实现用户登录功能 一、Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML、Xpath、Servlet、jsp的知识点都串联起来。 二、创建MVC架构的Web项目 在MyEclipse中新创建一个webmvcframework项目,导入项目所需要的开发包(jar包),创建项目所需要的包,在java 开发中,架构的层次是以包的形式体现出来的

一个良好的JavaWeb项目架构应该具有以上的11个包,这样显得层次分明,各个层之间的职责也很清晰明了,搭建JavaWeb项目架构时,就按照上面的1~11的序号顺序创建包:domain→dao→dao.impl→service→service.impl→web.controller→web.UI→web.filter→web.listener→util→junit.test,包的层次创建好了,项目的架构也就定下来了,当然,在实际的项目开发中,也不一定是完完全全按照上面说的来创建包的层次结构,而是根据项目的实际情况,可能还需要创建其他的包,这个得根据项目的需要来定了 在src目录(类目录)下面,创建用于保存用户数据的xml文件(DB.xml) 在WEB-INF目录下创建一个pages目录,pages目录存放系统的一些受保护(不允许用户直接通过URL地址访问)的jsp 页面,用户要想访问这些受保护的jsp页面,那么只能通过me.gacl.web.UI这个包里面的Servlet 创建好的项目如下图(图-1)所示: 图-1

实验五、过滤器与监听器

实验五:过滤器与监听器 一、实验目的 1.掌握过滤器的创建与配置方法; 2.掌握监听器的创建与配置方法; 二、实验内容 2.1 创建Web项目 1. 打开MyEclipse,创建一个Web Project,命名为ServletTest。 2.1 SecurityFilter 详细过程见securityFilter.rmvb 1.过滤器SecurityFilter的代码如下: package filters; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; public class SecurityFilter implements Filter { private FilterConfig filterConfig; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; // 获得用户输入的密码 String pwdInput = httpRequest.getParameter("password"); // 获得filter配置参数中的rightpass的值 String rightPwd = filterConfig.getInitParameter("rightpass"); if (!rightPwd.equals(pwdInput)) {

web.xml配置解析

一.监听器: 1.ContextLoaderListener 配置信息: org.springframework.web.context.ContextLoaderListener 配置解释: ContextLoaderListener的作用就是启动Web容器时,自动装ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。至于ApplicationContext.xml这个配置文件部署在哪,如何配置多个xml文件,书上都没怎么详细说明。现在的方法就是查看它的API文档。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。看看它的API说明 第一段说明ContextLoader可以由ContextLoaderListener和ContextLoaderServlet 生成。如果查看ContextLoaderServlet的API,可以看到它也关联了ContextLoader 这个类而且它实现了HttpServlet接口。 第二段,ContextLoader创建的是XmlWebApplicationContext这样一个类,它实现的接口 WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext-> BeanFactory,这样一来spring中的所有bean都由这个类来创建。 第三段,讲如何部署applicationContext的xml文件,如果在web.xml中不写任何参数配置信息,默认的路径是"/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml 里加入contextConfigLocation这个context参数: view plaincopy to clipboardprint? contextConfigLocation /WEB-INF/classes/applicationContext-*.xml

JSP+Servlet选择题

01.{JSP/Servlet题目}动态网站需要的技术为。(选择3项) A)CGI B)HTTP C)ASP D)PHP 02.{JSP/Servlet题目}在部署Servlet时,web.xml文件中标签应该包含哪 些标签。(选择2项) A) B) C) D) 03.{JSP/Servlet题目}假设web应用的文档根目录为MyApp,那么可以从哪里找到 database.jar文件。(选择1项) A)MyApp目录下 B)MyApp\images目录下 C)MyApp\WEB-INF目录下D)MyApp\WEB-INF\lib目录下 04.{JSP/Servlet题目}为了获得用户提交的表单参数,可以从哪一个接口中得到。(选择1项) A)ServletResponse B)Servlet C)RequestDispatcher D)ServletRequest 05.{JSP/Servlet题目}从以下哪一个选项中可以获得Servlet的初始化参数。(选择1项) A)Servlet B)ServletContext C)ServletConfig D)GenericServlet 06.{JSP/Servlet题目}表示“资源移动”的状态码是。(选择1项) A)200 B)302 C)400 D)500 07.{JSP/Servlet题目}哪一个对象可以用于获得浏览器发送的请求。(选择1项) A)HttpServletRequest B)HttpServletResponse C)HttpServlet D)Http 08.{JSP/Servlet题目}事务处理的结束方式。(选择2项) A)中止B)提交 C)完成D)回滚 09.{JSP/Servlet题目}如何取得数据源。(选择1项) A)通过Http B)通过ftp C)JNDI D)通过Connection对象 10.{JSP/Servlet题目}会话是。(选择1项) A)一个TCP/IP连接 B)一个物理连接 C)客户机和Web服务器之间的一组交互 D)Http请求 11.{JSP/Servlet题目}客户端状态管理的解决方案有。(选择3项) A)URL重写 B)隐藏域 C)Cookie D)以上都不是 12.{JSP/Servlet题目}当Web应用程序被关闭时,Servlet容器会调用Servlet Context “监听器”的哪个方法?(选择1项) A)contextInitialized() B)contextDestroyed() C)contextFinialized() D)contextShutdown() 13.{JSP/Servlet题目}与HttpSessionListener接口有关的方法是。(选择2项) A)SessionInitialized() B)SessionCreated() C)SessionFinialized() D)SessionDestroyed() 14.{JSP/Servlet题目}以下哪一个不是Filter接口的方法。(选择1项) A)init(FilterConfig config) B)void destroy() C)void doFilter(HttpServletRequest request,HttpServletResponse response) D)void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)

自定义监听器监听数据库中数据的变化

自定义监听器监听数据库中数据的变化 此程序只是一个简单的例子,主要监听数据库中Location的数据。 先写一个Event继承EventObject Java代码 package com.lbx.listong.servlet; import java.util.EventObject; public class LocationEvent extends EventObject { private static final long serialVersionUID = 1L; private Object obj; public LocationEvent(Object source) { super(source); obj = source; } public Object getSource(){ return obj; } } 然后写一个接口继承EventListener Java代码

package com.lbx.listong.servlet; import java.util.EventListener; public interface LocationListener extends EventListener { public void locationEvent(LocationEvent le); } 测试这个监听,实现他的接口 Java代码 package com.lbx.listong.servlet; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import com.lbx.listong.service.LocationService; import com.lbx.listong.thread.ListThread; public class TestLocationListener implements LocationListener { private LocationService ls; public TestLocationListener() { ls = new LocationService(); ls.addLocationListener(this);

第八讲 AWT和事件监听

第八讲AWT和事件监听打印本页 1 基本概念 下面几讲,我们就来学习AWT的各种容器和组件,并重点学习AWT的事件监听和处理方法。由于学习事件需要用到一些简单的构件,我们先学习几个简单的构件。现在,我们先来介绍AWT里面几个重要的概念:构件,容器,布局管理器和事件监听(AWT P4)。 1.1构件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 构件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向用户显示一段文本或一个图形等。常用的构件有: 按钮构件 项目选择构件:复选框(Checkbox)列表(List或Choice) 文本构件:文本框文本区 对话框构件:对话框文件对话框提示框帮助 菜单构件:弹出式菜单复选框菜单 1.2容器 容器是用来组织构件的单元。常用的容器有:面板、窗口。 1.3布局管理器: 布局管理器用来布置容器和容器中的各个构件,比如他们的大小、位置等。AWT提供了几种标准的布局管理器。 1.4事件监听 要使点击鼠标、敲打键盘等实现特定的动作,我们需要捕捉事件并且加以实现。AWT里典型的事件有:鼠标事件、鼠标移动事件、键盘事件、窗口事件等。 我们通过学习最基本的构件和容器(标签、按钮和面板)来粗略理解这些概念。标签和按钮是显示标签的简单构件;而面板是AWT提供的最基本的容器。 2 几个简单的构件和容器 标签(https://www.360docs.net/doc/cb8977764.html,bel) 标签用来显示文本。 演示(StarterApplet) 面板(java.awt.Panel) 面板是一个通用的容器,在上面可以放置各种构件。 我们经常用的Applet类,其实就是面板的一个子类 按钮(java.awt.Button) 按钮具有三维外型,当它们被激活时触发按钮事件,用户可以根据按钮事件,做出适当的反应,比如执行一系列操作等。 演示 3 事件 AWT有两种事件处理模型:一种是基于继承的模型,它在AWT1.1或以前的版本中使用,现在已经逐渐被淘汰;另一种是基于授权的事件模型。我们主要学习给予授权的事件模型。 授权事件模型的原理很简单:事件源激发事件、事件监听器监听事件,最后执行事件。可以通过调用addXYZListener(XYZListner)方法向构件注册监听器。把监听器加到构件中以后,如果构件激发相应类型的事件,

广东商学院 web开发实验项目五 Servlet技术开发实验-Web-

实验报告 课程名称Web开发技术 实验项目名称实验项目五 Servlet技术开发实验 班级与班级代码(2012-2013-1)-113283-11006-2 实验室名称(或课室)实验楼403 专业2010信息管理与信息系统1班任课教师傅清波 学号: 姓名: 实验日期:2012 年 11 月 13 日 广东商学院教务处制

姓名实验报告成绩 评语: 指导教师(签名) 年月日说明:指导教师评分后,实验报告交院(系)办公室保存。

实验项目五Servlet技术开发实验 一、实验目的 1、了解和掌握Servlet接口的使用方法; 2、掌握Servlet的配置方法; 3、掌握Web监听的常用的方法; 4、掌握Web应用过滤器的开发方法。 二、实验内容 参照教材第7章内容,完成一个Servlet程序的开发和配置过程。参照教材第8 章内容,创建Web监听和过滤程序。 三、实验原理 Servlet技术原理、Web监听和过滤原理。 四、实验环境 电脑主机CPU intel core i5-2450m、RAM 6G,操作系统Windows 7 64位,开发工具Myeclipse8.5。 五、实验步骤 (一)Servlet程序的开发和配置过程 1、打开Myeclipse8.5软件,新建一个web工程“jsp56”; 图1:新建“jsp56”工程

2、在src文件夹下新建一个com包; 图2:新建“com”包 3、在com包下新建一个servlet,配置如下图,输入源代码并保存; 图3:新建servlet并配置

图4:输入源代码 4、运行工程“jsp56”,在浏览器中输入链接http://127.0.0.1:8080/jsp56/hello 访问; (二)创建Web监听 1、在com包下新建一个MyServletContextListener类,输入代码并保存; 图5:新建MyServletContextListener类

JMeter基础入门之必备 学习

JMeter学习笔记 1. 安装JMeter 1.安装JDK 1.4以上版本。 2. 设置环境变量: i. 在用户变量中,新建变量名“JAVA_HOME”,变量值为:安装JDK的目录,如我的为: “C:\Program Files\Java\jdk1.5.0;” ii. 再新建变量名为“CLASSPATH”,变量值为: “%JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar; %JAVA_HOME%\bin;” 。 iii. 在系统变量的“Path”变量值后加上:“%JAVA_HOME%\bin;”。 3. 安装Jmeter,解压“jakarta-jmeter-2.3.2.zip”到E盘根目录下: “E:\jakarta-jmeter-2.3.2”。 4. 设置环境变量: i. 在用户变量中,新建变量名“JMETER_HOME”,变量值为: “E:\jakarta-jmeter-2.3.2;”。 ii. 修改“CLASSPATH”,添加: “%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan .jar;%JMETER_HOME%\lib\logkit-1.2.jar;”。 5. 运行jmeter: 直接打开 E:\jakarta-jmeter-2.3.2\bin\jmeter.bat 即可。 2. JMeter 的主要测试组件总结如下: 1. 测试计划是使用JMeter 进行测试的起点,它是其它JMeter 测试元件的容器。 2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。 3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。 4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。 5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。 6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。 7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。 8. 定时器负责定义请求之间的延迟间隔。

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中没有保存用户信息),将回到登录页面;若已经登录则继续该请求。 public class SecurityFilter implements Filter {

键盘监听器与鼠标监听器

键盘监听器 键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KE Y_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASC II码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual K ey Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。 VK_LEFT/VK_RIGHT 左右方向键VK_CONTROL Ctrl键 VK_KP_UP 小键盘向上VK_ATL Alt键 VK_PAUSE 暂停键VK_SHIFT Shift键 VK_NUMBER0 小键盘数字0 VK_F1 功能键F1 VK_0 数字键0 VK_B 字母键B 虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONT ROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。 监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt), keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。 除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKey Text(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。 下面的例子演示得到键码和字符的方法,在命令行上显示结果。 例15 本例程演示键盘监听器后键码的用法。 /// // KeyEvt.java

实验四Servlet Listener的使用

学号 09770210 基于JSP的W eb应用程序设计 实验报告 实验四Servlet Listener的使用 学生姓名张艳羽 专业、班级09软件2班 指导教师何军 成绩 电子与信息工程系 2012 年 5 月 20 日

天津城市建设学院 设计性实验任务书 电子与信息工程系软件工程专业 2 班 姓名张艳羽学号09770210 课程名称:基于JSP的Web应用程序设计 设计题目:实验四Servlet Listener的使用 完成期限:自2012 年 5 月17 日至2012 年 5 月20 日 设计依据、要求及主要内容(可另加附页): 1、设计依据: 本实验是以教材《JSP动态网站开发实践教程》一书的第10章为依据, 初步掌握JSP 程序设计思想及方法。 2、设计要求: 1) 熟悉Servlet监听接口及其中规定的方法和意义; 2) 掌握Servlet监听器编写、部署和运行; 3)了解在ServletContext、HttpSession 和ServletRequest 对象上的监听事件及处理方法。指导教师:何军

一、实验目的 了解在哪些对象上可以产生监听事件;掌握ServletContext 和HttpSession 对象上的事件处理方法;了解在ServletRequest 对象上的事件及处理方法。 二、实验思想 在Web应用程序中,事件的处理是通过事件监听器接口来处理的。Web应用事件处理的原理为:当Web应用中某些状态改变时,Servlet 容器就产生某种事件,如ServletContext对象初始化时会产生ServletContextEvent事件,此时Servlet容器就会从注册的事件监听器中寻找处理该事件的监听器对象,并执行相应的代码。 Servlet 2.4 规范中共定义了6 种事件类型和8 个事件监听器接口,如 表4-1。 三、实验内容 1) 实验环境 MyEclipse 8.5集成开发平台、Tomcat服务器。 2)实验步骤 完成两个Servlet Listener程序。

Android程序设计期末试卷答案

《Android程序设计》期末试题B(答案) 一、判断题(每小题2分,共10分)1、(错)2、(错)3、(对)4、(错)5、(对)二、单项选择题(在每小题的四个备选答案中,有且只有一个正确答案,请将正确答案的序号填在题干的括号内。每小题2分,共20分) 题号1 2 3 4 5 6 7 8 9 10 答案D C B A D D D C B B 三、填空题(每空2分,共10分)1、TableLayout 、RelativeLayout 2、START_ STICKY 、START_REDELIVER_INTENT 3、ContentResolver 四、名词解释(每小题5分,共15分)1、答:Intent Filter其实是一个Intent属性限制条件的集合,包含Intent对象的action、data、category等属性限制。每个Intent Filter描述组件的一种能力,即能够接收的一组Intent。2、答:Service是Android系统的后台服务组件,适用于开发无界面、长时间运行的应用功能。3、答:如果应用程序注册了BroadcastReceiver,则可以接收到指定的广播消息并作相应的处理。所以BroadcastReceiver 可以看成是全局的监听器,用于监听系统广播消息或自定义广播消息。 五、简答题(每小题5分,共20分)1、答:获取子Activity的返回值,一般可以分为以下三个步骤:(1)使用startActivityForResult()去启动子Activity。(2)设置子Activity 的返回值。在子Activity调用finish()函数关闭前,调用setResult()方法将所需的数据返回给父Activity。(3)在父Activity中获取返回值。当子Activity关闭时,启动它的父Activity 的onActivityResult()方法将被调用;如果需要在父Activity中处理子Activity的返回值,则重载此方法即可。 2、答:Android系统中运行Service有如下两种方式:(1)启动方式通过Context的startService()方法启动Service,访问者与Service之间没有关联,即使访问者退出了,Service 仍然运行。访问调用stopService()停用Service。(2)绑定方式通过Context的bindService()方法绑定Service,访问者与Service绑定在了一起,访问者一旦退出,Service也就终止。访问者调用unbindService()来解绑定Service。 3、答:要实现自己的BroadcastReceiver,就需要继承android.content.BroadcastReceiver类并重写onReceive()方法。BroadcastReceiver作为应用级组件,必须注册才能处理广播消息。注册有两种方式:(1)静态地在AndroidManifest.xml中用标签声明,并在标签内用标签设置过滤器。(2)动态的在代码中先定义并设置好一个Intent Filter 对象,然后在需要注册的地方调Context. registerReceiver (BroadcastReceiver,IntentFilter)方法。 4、开放性问题,没有标准答案。 六、编程题(第1小题10分,第2小题15分,共25分)1、解://ChangeTextColorActivity.java package xiong.changetextcolor; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class ChangeTextColorActivity extends Activity { private TextView mText; private Button mButton; private int[] mColors; private int colornum; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCo ntentView(https://www.360docs.net/doc/cb8977764.html,yout.main); mText = (TextView) findViewById(https://www.360docs.net/doc/cb8977764.html,); mButton = (Button) findVi ewById(R.id.change); /* 声明并建构一整数array来储存欲使用的文字颜色 */ mColors = new int[] { Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLO W }; colornum = 0; mText.setTextColor(mColors[colornum]); /* 使用onClick让用户点下按钮来驱动变动文字颜色 */ mButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {

相关文档
最新文档