JSP/Servlet 中的事件处理写过AWT或Swing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响应。
其实我们在编写JSP/Servle程序时,也有类似的事件处理机制,所不同的是在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。
1. Servlet中的Listener和Event:
在JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event类别。ServletContextListener接口
[接口方法] contextInitialized()与 contextDestroyed()
[接收事件] ServletContextEvent
[触发场景] 在Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。
ServletContextAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] ServletContextAttributeEvent
[触发场景] 若有对象加入为application(ServletContext)对象的属性,则
会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、attributeRemoved()。
HttpSessionListener
[接口方法] sessionCreated()与sessionDestroyed ()
[接收事件] HttpSessionEvent
[触发场景] 在session (HttpSession)对象建立或被消灭时,会分别呼叫这
两个方法。
HttpSessionAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] HttpSessionBindingEvent
[触发场景] 若有对象加入为session(HttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。
HttpSessionActivationListener
[接口方法] sessionDidActivate()与 sessionWillPassivate()
[接收事件] HttpSessionEvent
[触发场景] Activate与Passivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象
重新加载JVM时所采的动作称之为Activate,所以容易理解的,sessionDidActivate()与 sessionWillPassivate()分别于Activeate后与将Passivate前呼叫。
ServletRequestListener
[接口方法] requestInitialized()与 requestDestroyed()
[接收事件] RequestEvent
[触发场景] 在request(HttpServletRequest)对象建立或被消灭时,会分别
呼叫这两个方法。
ServletRequestAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] HttpSessionBindingEvent
[触发场景] 若有对象加入为request(HttpServletRequest)对象的属性,则
会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。
HttpSessionBindingListener
[接口方法] valueBound()与valueUnbound()
[接收事件] HttpSessionBindingEvent
[触发场景] 实现HttpSessionBindingListener接口的类别,其实例如果被加入至session(HttpSession)对象的属性中,则会呼叫 valueBound(),如果被从session(HttpSession)对象的属性中移除,则会呼叫valueUnbound(),实现 HttpSessionBindingListener接口的类别不需在web.xml中设定。
2. 如何注册Servlet中的事件
实现上面这几个接口的类别,除了HttpSessionBindingListener外,必须在web.xml中向容器注册,容器才会在对应的事件发生时呼叫对应的类别,如:
< listener >
< listener-class >
demo.servlet.listener.CustomServletContextListener
3. Servlet事件的应用实例
看到这里,你也许会有疑问: 了解这些 listener和event 有什么用呢?我平时
开发没有用到这些,一样也能完成任务啊.
不错,在日常的开发中很少用到这些事件处理的方面,但是在某些情况下使用事
件处理机制却可以达到事半功倍的效果,例如下面两个例子:
4.Java类实例
==========
//侦听启动和关闭
import javax.servlet.ServletContextListener;
import javax.servlet.*;
public class TigerListen implements ServletContextListener { public void contextInitialized(ServletContextEvent sce)
{
System.out.print("Init") ;
}
public void contextDestroyed(ServletContextEvent sce)
{
System.out.print("Destroved") ;
}
}
对应的web.xml是
============
TigerListen
============
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方法)
1、p4 开放手机联盟成员 ①电信运营商 ②半导体芯片商 ③手机硬件制造商 ④软件厂商 ⑤商品化公司 2、p9 Android具有自己的运行时和虚拟机,与java和.Net 运行时不同,Android运行时还可以管理进程的生命周期。Eclipse 3、p10 4、p12 在开始下载和安装Eclipse之前,应该首先确认开发主机上是否已经安装了Java 运行环境JRE 5、p26 DDMS ①Android系统中内置的调试工具 ②监视Android系统中进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和SMS短信,以及浏览Android模拟器
文件系统等 ③启动文件:
SSH中自定义监听器、拦截器、过滤器 1、自定义监听器 a)自定义监听器有哪些 监听器的定义是在web.xml中完成,其实做过ssh项目的人并不陌生监听器,主要是因为spring提供了监听器就是
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+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)) {
一.监听器: 1.ContextLoaderListener 配置信息:
01.{JSP/Servlet题目}动态网站需要的技术为。(选择3项) A)CGI B)HTTP C)ASP D)PHP 02.{JSP/Servlet题目}在部署Servlet时,web.xml文件中
自定义监听器监听数据库中数据的变化 此程序只是一个简单的例子,主要监听数据库中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和事件监听打印本页 1 基本概念 下面几讲,我们就来学习AWT的各种容器和组件,并重点学习AWT的事件监听和处理方法。由于学习事件需要用到一些简单的构件,我们先学习几个简单的构件。现在,我们先来介绍AWT里面几个重要的概念:构件,容器,布局管理器和事件监听(AWT P4)。 1.1构件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 构件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向用户显示一段文本或一个图形等。常用的构件有: 按钮构件 项目选择构件:复选框(Checkbox)列表(List或Choice) 文本构件:文本框文本区 对话框构件:对话框文件对话框提示框帮助 菜单构件:弹出式菜单复选框菜单 1.2容器 容器是用来组织构件的单元。常用的容器有:面板、窗口。 1.3布局管理器: 布局管理器用来布置容器和容器中的各个构件,比如他们的大小、位置等。AWT提供了几种标准的布局管理器。 1.4事件监听 要使点击鼠标、敲打键盘等实现特定的动作,我们需要捕捉事件并且加以实现。AWT里典型的事件有:鼠标事件、鼠标移动事件、键盘事件、窗口事件等。 我们通过学习最基本的构件和容器(标签、按钮和面板)来粗略理解这些概念。标签和按钮是显示标签的简单构件;而面板是AWT提供的最基本的容器。 2 几个简单的构件和容器 标签(https://www.doczj.com/doc/a218980315.html,bel) 标签用来显示文本。 演示(StarterApplet) 面板(java.awt.Panel) 面板是一个通用的容器,在上面可以放置各种构件。 我们经常用的Applet类,其实就是面板的一个子类 按钮(java.awt.Button) 按钮具有三维外型,当它们被激活时触发按钮事件,用户可以根据按钮事件,做出适当的反应,比如执行一系列操作等。 演示 3 事件 AWT有两种事件处理模型:一种是基于继承的模型,它在AWT1.1或以前的版本中使用,现在已经逐渐被淘汰;另一种是基于授权的事件模型。我们主要学习给予授权的事件模型。 授权事件模型的原理很简单:事件源激发事件、事件监听器监听事件,最后执行事件。可以通过调用addXYZListener(XYZListner)方法向构件注册监听器。把监听器加到构件中以后,如果构件激发相应类型的事件,
实验报告 课程名称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学习笔记 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监听器 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
学号 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程序设计》期末试题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中用