2011年计算机二级考试JAVA学习整理(65)
2011java计算机等级考试二级第二章

Java二级真题第二章1、下列变量定义中,不合法的是()A int xB int _123C int Summer_20010_gross_salD int #dim2、下列变量名的定义中,符合java命名约定的是()A filednameB superC IntnumD $ number3、下列符合java命名约定的是()A package com.Bi.hrB public class xyzC int ID void setCustomerName()4、下列标识符(名字)命名规则中,正确的是()A 类名的首字母小写B 变量和方法名的首字母大写C 接口名的首字母小写D常量名完全大写5、java中常量的保留字是()A constB finalC finallyD native6、下列关键字中可以表示常量的是()A finalB defaultC privateD transient7、下列数中为八进制的是()A 27B 0×25C 026D 0288、java中的基本数据类型int在不同的操作系统平台上的字长是()A不同的 B 32位 C 64位 D 16位9、给一个short类型变量赋值的范围是()A -128 ~ +127B -2 147 483 648 ~ +2 147 483 647C -32 768 ~+ 32 767D -1000 ~ +100010、下列语句中错误的是()A String[] = {"how","are"}B byte b=255C Strings="one"+"two"D int i =2+200011、下列语句中正确的是()A System.out.pritln(1+"1");B int I = 2+'2';C strings="on"+'one';D byte b=257;12、下列选项中为单精度数的是()A 2B 5.2C 0.2fD 02313、下列有关java布尔类型的描述中,正确的是()A 一种基本的数据类型,它的类型名称为booleanB 用ini表示类型C 其值可以赋给int类型的变量D 有两个值,1代表真,0代表假14、下列布尔型变量的定义中,正确且规范的是()A BOOLEAN canceled = false;B boolean canceled=false;C boolean CANCELED=false;D boolean canceled=FALSE;15、下列关于boolean类型的叙述中,正确的是()A 可以将boolean类型的数值转换为int类型的数值B 可以将boolean类型的数值转换为字符串集C 可以将boolean 类型的数值转换为char类型的数值D 不能将boolean类型的数值转换为其他基本数据类型16、在下列表达式中,类型可以作为int型的是()A "abc"+"efg"B "abc"+'efg'C 'a'+'b'D 3+"4"17、public class TypeTransition {public static void main(String[] args) {char a = 'a';int i = 100;long y = 456;int aa = a + i;long yy = y - aa;System.out.println("a=" + aa);System.out.println("yy=" + yy);}}运行结果是()A aa=197 yy=259B aa=177 yy=259C aa=543 yy=288D aa=197 yy=33318、下列属于java合法标识符的是()A "ABC"B &5678C +rriwoD saler19、下列代表十六进制整数的是()A 0123B 1 900C fa00D 0xa220、下列叙述中,正确的是()A java 语言的标识符是区分大小写的B 源文件名与public类名可以不相同C 源文件扩展名jarD 源文件中public 类的数目不限21、下列属于合法标识符的是()A _catB 5booksC +staticD -3.1415922、在java中,表示换行的转义符是()A \nB \fC 'n'D \dd23、char类型的取值范围是()A -27 ~ 27-1B 0 ~ 216-1C -215 ~ 215-1D 0~ 28-124、十进制数16的十六进制表示格式是()A 0x10B 0x16C 0xa D1625、int型的public成员变量MAX_LENGTH ,该值保持为常数100,则定义这个变量的语句是()A public int MAX_LENGTH =100B final int MAX_LENGTH =100C public const int MAX_LENGTH =100D public final int MAX_LENGTH =10026、按照java的标识符命名规范,下列表示一个类的标识符正确的是A HellowordB HelloWordC hellowordD helloWord填空题1、按照Java中的命名约定,方法名的起始字母一般都是小写,但___方法例外.2、在java中,所有数据类型的长度都是固定的,因此没有保留字___3、表达式(10*49.3)的类型是____4、java语言中的浮点数默认类型是____5、在java中,3.14159D 所表示____6、Java中的字符变量在内存中占_____位(bit)7、能打印出一个双引号的语句是System.out.println("___")8、在Java中,字符以16位的_____表示9、java中,转义符\n表示_____10、java对简单数据类型进行了类包装,int对应的包装类是____11、。
计算机二级java考试题库及答案

计算机二级java考试题库及答案 一、选择题 1. Java中,下列哪个关键字用于声明一个类? A. class B. interface C. struct D. enum 答案:A
2. 在Java中,下列哪个是正确的字符串字面量? A. "Hello, World!" B. 'Hello, World!' C. "Hello, World!' D. 'Hello, World!' 答案:A
3. Java中,下列哪个是合法的变量名? A. 2variable B. variable2 C. $variable D. variable- 答案:B
4. 在Java中,下列哪个是正确的方法声明? A. public int add(int a, int b) { return a + b; } B. public int add(int a, int b) { return a - b; } C. public int add(int a, int b) { return a * b; } D. 以上都是 答案:D 5. Java中,下列哪个是正确的数组声明? A. int[] array = new int[5]; B. int array[] = new int[5]; C. int array = new int[5]; D. 以上都是 答案:D
二、填空题 1. Java中,用于声明一个接口的关键字是________。 答案:interface
2. 在Java中,________关键字用于抛出异常。 答案:throw
3. Java中,________关键字用于捕获异常。 答案:catch
4. Java中,________关键字用于声明一个枚举类型。 答案:enum
5. Java中,________关键字用于声明一个方法。 答案:void 或者其他返回类型
三、简答题 1. 简述Java中继承的特点。 答案:Java中的继承是单继承,即一个类只能继承一个父类。它支持方法重写和方法重载,允许多态性。
计算机二级考试Java试题及答案

计算机二级考试Java试题及答案导语:为了让大家好好备考,以下是店铺为大家精心整理的计算机二级考试Java试题及答案,欢迎大家参考!1. 说明system.out.println(“This character”+’A’+”has the value:”+(int)’A’)的输出结果。
解:This character A has the value:65.2. Java中整数类型包括_______ . (D)A. int ,byte, charB . int , short ,long ,byte , charC. int, short ,long ,charD. int, short ,long ,byte3. 计算表达式的值:x+a%3*(int) (x+y) %2/4,设x=2.5,a=7,y=4.7.解:表达式 x+a%3*(int) (x+y) %2/4 的值为2.75。
4. 以下运算符按运算优先级从高到低排列顺序正确的是______(A)A. ! , *, < , =B. !, =,*,>=C. !,*, &&, > =D. !=,*, &&, >=5. 设a=6,b= --4, 计算表达式的值:——a% ++b(——a) << p=""><>(a<10 a="">10 ? a: b)解:——a%++b的表达式的值为2(——a)<< p=""><>(a<10 a="">10 ? a:b)表达式的值为—46.指出下面哪些是合法的标识符 (ABE)A $personsB TwoUsersC *pointD thisE _endline7. 指出下面哪些是将一个十六进制值付给一个long 型变量 (D)A long number =345LB long number=0345C long number =0345LD long number=0x345L8. 下面哪些不是java的原始数据类型,(B C)A shortB BolleanC unitD float9. 下面的.哪些声明是合法的(ADE)A long l =4990B int i=4LC float f=1—1D double d=34.4E double t=0.9F10.下面哪些使用”<<”和”>>”操作符的陈述是对的,说出为什么。
二级计算机java考试试题及答案

二级计算机java考试试题及答案一、选择题(每题2分,共40分)1. Java中,以下哪个关键字用于声明一个类?A. classB. interfaceC. abstractD. final答案:A2. 在Java中,哪个方法用于获取字符串的长度?A. length()B. size()C. count()D. length答案:A3. 下列哪个选项是Java中的多态性?A. 一个方法可以被多个类继承B. 一个类可以继承多个类C. 一个接口可以被多个类实现D. 一个类可以有多个父类答案:C4. Java中,哪个关键字用于声明一个方法?A. methodB. functionC. procedureD. void答案:D5. 在Java中,哪个关键字用于声明一个变量为静态?A. staticB. finalC. constD. volatile答案:A6. Java中,哪个关键字用于声明一个变量为常量?A. finalB. staticC. constD. volatile答案:A7. 在Java中,哪个关键字用于声明一个方法为同步?A. synchronizedB. threadC. lockD. mutex答案:A8. Java中,哪个关键字用于声明一个类为抽象类?A. abstractB. interfaceC. staticD. final答案:A9. 在Java中,哪个关键字用于声明一个方法为重载?A. overloadB. overloadsC. overloadingD. none of the above答案:D10. Java中,哪个关键字用于声明一个方法为重写?A. overrideB. overloadC. extendsD. implements答案:A11. 在Java中,哪个关键字用于声明一个变量为线程安全的?A. synchronizedB. threadC. volatileD. static答案:C12. Java中,哪个关键字用于声明一个类为最终类?A. finalB. abstractC. staticD. volatile答案:A13. 在Java中,哪个关键字用于声明一个变量为瞬态?A. transientB. staticC. volatileD. synchronized答案:A14. Java中,哪个关键字用于声明一个方法为本地方法?A. nativeB. synchronizedC. abstractD. final答案:A15. 在Java中,哪个关键字用于声明一个变量为严格FP(浮点数)?A. strictfpB. volatileC. synchronizedD. transient答案:A16. Java中,哪个关键字用于声明一个类为接口?A. interfaceB. abstractC. classD. final答案:A17. 在Java中,哪个关键字用于声明一个方法为私有?A. privateB. publicC. protectedD. default答案:A18. Java中,哪个关键字用于声明一个变量为包级私有?A. packageB. privateC. protectedD. default答案:D19. 在Java中,哪个关键字用于声明一个方法为保护级别?A. protectedB. publicC. privateD. default答案:A20. Java中,哪个关键字用于声明一个变量为公开?A. publicB. privateC. protectedD. default答案:A二、填空题(每题2分,共20分)1. Java中,用于声明一个类的关键字是____。
全国计算机等级考试《二级Java》试题题库

全国计算机等级考试《二级Java》试题题库1. 信息隐蔽的概念与下述哪一种概念直接相关()。
A. 软件结构定义B. 模块独立性C. 模块类型划分D. 模块耦合度【答案】B2. 下列各选项中,不属于序言性注释的是()。
A. 程序标题B. 程序设计者C. 主要算法D. 数据状态【答案】D 本资料来源公_众.号:文得课堂,更多计算机等级考试题库及视频,上公_众.号:文得课堂查找。
3. 对建立良好的程序设计风格,下面描述正确的是()。
A. 程序应简单、清晰、可读性好B. 符号名的命名只要符合语法C. 充分考虑程序的执行效率D. 程序的注释可有可无【答案】A4. 下列叙述中,不符合良好程序设计风格要求的是()。
A. 程序的效率第一,清晰第二B. 程序的可读性好C. 程序中要有必要的注释D. 输入数据前要有提示信息【答案】A5. 结构化程序所要求的基本结构不包括()。
A. 顺序结构B. GOTO跳转C. 选择(分支)结构D. 重复(循环)结构【答案】B6. 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。
下面属于应用软件的是()。
A. 编译程序B. 操作系统C. 教务管理系统D. 汇编程序【答案】C7. 下面属于系统软件的是()。
A. 财务管理系统B. 编译软件C. 编辑软件WordD. 杀毒软件【答案】B8. 下面属于应用软件的是()。
A. 学生成绩管理系统B. UNIX操作系统C. 汇编程序D. 编译程序【答案】A9. 软件是指()。
A. 程序B. 程序和文档C. 算法加数据结构D. 程序、数据与相关文档的完整集合【答案】D10. 计算机软件包括()。
A. 算法和数据B. 程序和数据C. 程序和文档D. 程序、数据及相关文档【答案】D11. 结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是()。
A. 三种基本结构不可以嵌套使用B. 顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移C. 选择结构是根据不同的条件执行不同分支中的语句D. 循环结构是根据条件决定是否重复、重复执行多少次循环体语句【答案】A12. 下列选项中属于面向对象设计方法主要特征的是()。
计算机二级考试JAVA知识点集锦

计算机⼆级考试JAVA知识点集锦 关于计算机⼆级JAVA考试知识点不知道⼤家都掌握得如何了,下⾯是店铺整理的相关知识点,欢迎学习!更多内容请关注应届毕业⽣考试⽹! 知识点⼀:通知模型 ⼀个管理构件提供的管理接⼝允许代理对其管理资源进⾏控制和配置。
然⽽,对管理复杂的分布式系统来说,这些接⼝只是提供了⼀部分功能。
通常,管理应⽤程序需要对状态变化或者当特别情况发⽣变化时作出反映。
为此,JMX定义了通知模型。
通知模型仅仅涉及了在同⼀个JMX代理中的管理构件之间的事件传播。
JMX通知模型依靠以下⼏个部分: 1)Notification,⼀个通⽤的事件类型,该类标识事件的类型,可以被直接使⽤,也可以根据传递的事件的需要⽽被扩展。
2)NotificationListener接⼝,接受通知的对象需实现此接⼝。
3)NotificationFilter接⼝,作为通知过滤器的对象需实现此接⼝,为通知监听者提供了⼀个过滤通知的过滤器。
4)NotificationBroadcaster接⼝,通知发送者需实现此接⼝,该接⼝允许希望得到通知的监听者注册。
发送⼀个通⽤类型的通知,任何⼀个监听者都会得到该通知。
因此,监听者需提供过滤器来选择所需要接受的.通知。
任何类型的管理构件,标准的或动态的,都可以作为⼀个通知发送者,也可以作为⼀个通知监听者,或两者都是。
知识点⼆:MBean服务器 Mbean服务器为代理层的核⼼,设备层的所有管理构件都在其注册,管理者只⽤通过它才能访问管理构件。
管理构件可以通过以下三种⽅法实例化和注册: 1)通过另⼀个管理构件 2)管理代理本⾝ 3)远程应⽤程序 注册⼀个管理构件时,必须提供⼀个唯⼀的对象名。
管理应⽤程序⽤这个对象名进⾏标识管理构件并对其操作。
这些操作包括: 1)发现管理构件的管理接⼝ 2)读写属性值 3)执⾏管理构件中定义的操作 4)获得管理构件发出的通告 5)基于对象名和属性值来查询管理构件 知识点三:协议适配器和连接器 MBean服务器依赖于协议适配器和连接器来和运⾏该代理的Java虚拟机之外的管理应⽤程序进⾏通信。
计算机二级java考试题库及答案
计算机二级java考试题库及答案一、选择题1. Java中,哪个关键字用于声明一个类?A. classB. interfaceC. packageD. import答案:A2. 下列哪个选项是Java中合法的变量名?A. 2variableB. variable2C. variable-nameD. variable$name答案:C3. 在Java中,哪个类提供了基本的输入输出功能?A. java.ioB. java.utilC. ngD. 答案:C4. Java中,下列哪个是正确的继承关系?A. 类可以继承多个类B. 接口可以继承多个接口C. 类可以实现多个接口D. 接口可以实现类答案:C5. Java中,下列哪个关键字用于抛出异常?A. throwB. throwsC. catchD. finally答案:B二、填空题1. Java中,声明一个整型变量并初始化为10,语句为:________。
答案:int num = 10;2. Java中,实现多态的一种方式是通过________关键字。
答案:extends3. Java中,用于捕获异常的关键字是________。
答案:try-catch4. Java中,声明一个字符串变量并初始化为"Hello World",语句为:________。
答案:String str = "Hello World";5. Java中,用于定义一个接口的关键字是________。
答案:interface三、简答题1. 简述Java中接口和抽象类的区别。
答案:Java中的接口和抽象类都是实现抽象编程的方式。
接口可以定义方法,但不能实现这些方法,而抽象类可以定义并实现方法。
一个类可以实现多个接口,但只能继承一个抽象类。
接口中的方法默认是public的,而抽象类中的方法可以是任意访问级别。
2. 描述Java中垃圾回收机制的作用。
计算机二级《Java语言程序设计》知识点练习
计算机二级《Java语言程序设计》知识点练习 计算机二级《Java语言程序设计》知识点练习 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。为了帮助考生们更好地复习二级Java考试,下面店铺为大家搜索整理了关于《Java语言程序设计》知识点练习,欢迎参考练习,希望对大家有所帮助!想了解更多相关信息请持续关注我们店铺! 1、开发Java语言的公司? 美国Sun (Sun Microsystems)公司开发。 2、Java的3个版本? J2SE(Java2 Standard Edition) 标准版 J2EE(Java 2 Platform,Enterprise Edition) 企业版 J2ME(Java 2 Micro Edition) 微小版 在5.0以后新版本中称作:JavaSE JavaEE JavaME 3、Java语言的几个主要特点? 平台无关性:能运行于不同的`平台上 安全性:去掉了指针操作,内存由操作系统分配 面向对象:利用类使程序更加利于维护 分布式:可以使用网络文件和使用本机文件一样容易 健壮性:检查程序编译和运行的错误 4、Java的三大核心机制 虚拟机机制:利用虚拟机解释字节码执行java程序实现跨平台 垃圾收集机制:自动内存回收 代码安全性机制:加载代码后校验代码后再执行代码。 5、JDK是什么? JDK(Java Development Kit)Java开发工具包。包括了JRE,是开发Java的人员必备的开发运行Java程序的工具。 6、JRE是什么? JRE(Java Runtime Environment)Java运行环境,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 7、JVM是什么? JVM (Java Virtual Machine) Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 8、安装JDK的操作系统问题? 必须针对于不同的操作系统下载安装不同的JDK,例如windows下安装针对于windows的JDK,linux下安装针对于linux的JDK。 9、需要配置的相关环境变量? path:用于搜索外部命令,例如编译程序的javac命令,执行程序的java命令 classpath:用于搜索类,即class文件,例如可以在不同的位置执行类文件 10、可以编写Java程序的常见开发工具? 记事本,Eclipse,MyEclipse,Jcreate 11、Java文件的类型? 有两种: 扩展名为java的文件:是Java源文件,属于编译之前的纯文本文件,存储java源代码。 扩展名为class的文件:是Java类文件,属于编译之后的二进制文件,存储字节码。 12、Java的编译运行原理? 首先编写java源文件,然后编译成class类文件,然后通过虚拟机解释成机器码到硬件执行。 13、Java是编译型语言还是解释型的语言? 既不是完全编译型,也不是完全解释型,是半编译半解释的。
二级计算机java考试试题及答案
二级计算机java考试试题及答案一、选择题(每题2分,共20分)1. Java中,下列哪个关键字用于声明一个类?A. classB. interfaceC. packageD. import答案:A2. 在Java中,哪个方法用于获取对象的哈希码?A. hashCode()B. equals()C. toString()D. clone()答案:A3. 下列哪个选项是Java中合法的标识符?A. 2variableB. variable2C. -variableD. variable$答案:B4. Java中,哪个关键字用于抛出异常?A. tryB. catchC. throwD. finally答案:C5. 在Java中,下列哪个集合类允许存储重复元素?A. SetB. ListC. MapD. Queue答案:B6. Java中,下列哪个接口用于定义回调方法?A. RunnableB. CallableC. ComparatorD. Observer答案:D7. 下列哪个选项是Java中的正确数据类型?A. intB. integerC. longD. longint答案:A8. 在Java中,下列哪个关键字用于内部类的定义?A. privateB. staticC. finalD. inner答案:D9. Java中,哪个方法用于将字符串转换为字符数组?A. toCharArray()B. split()C. substring()D. replace()答案:A10. 在Java中,下列哪个关键字用于实现多态?A. abstractB. finalC. overrideD. static答案:C二、填空题(每题2分,共20分)1. Java中,____关键字用于声明一个方法,该方法没有返回值。
答案:void2. 在Java中,____关键字用于声明一个方法,该方法的返回值是布尔类型。
答案:boolean3. Java中的____关键字用于声明一个方法,该方法必须被子类实现。
计算机二级java复习题库
计算机二级java复习题库在准备计算机二级Java考试时,考生需要对Java语言的基础概念、语法、面向对象编程、异常处理、集合框架、多线程以及输入输出流等有深入的理解和掌握。
以下是一些复习题,可以帮助考生检验自己的学习效果。
1. Java基础概念- 简述Java语言的特点。
- 描述Java虚拟机(JVM)的作用。
- 说明Java中的“一次编译,到处运行”是如何实现的。
2. Java数据类型和运算符- 列举Java的基本数据类型,并说明它们在内存中的存储大小。
- 描述Java中的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符。
3. 控制语句- 说明if-else语句和switch-case语句的区别。
- 描述循环语句for、while和do-while的用法和区别。
4. 数组和字符串- 阐述Java中数组的声明、初始化和访问方式。
- 描述字符串的不可变性及其对性能的影响。
5. 面向对象编程- 简述面向对象编程的三大特性:封装、继承和多态。
- 描述Java中类和对象的关系,以及如何创建和使用对象。
6. 类和接口- 说明Java中类和对象的基本概念。
- 描述接口的作用及其与抽象类的区别。
7. 异常处理- 描述Java中异常的分类和处理机制。
- 说明如何使用try-catch-finally语句块处理异常。
8. 集合框架- 简述Java集合框架的组成,包括List、Set、Map等。
- 描述ArrayList、LinkedList、HashSet、TreeSet和HashMap的实现原理和使用场景。
9. 多线程- 描述Java中线程的创建方式和生命周期。
- 说明线程同步和死锁的概念及其解决方法。
10. 输入输出流- 描述Java中字节流和字符流的区别。
- 说明如何使用FileInputStream、FileOutputStream、BufferedReader和BufferedWriter等类进行文件操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.7 Servlet中的Listener的应用由于工作需要,最近在找一些解决方案,发现Listener是一个很好的东西,能够监听到session,application的create,destroy,可以监听到session,application属性绑定的变化,考虑了一下,可以应用在“在线人数统计”,“数据缓存”等各个方面,下面是整理的一些资料。
Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:
ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。
ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。
HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。
HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。
下面我们开发一个具体的例子,这个监听器能够统计在线的人数。在ServletContext初始化和销毁时,在服务器控制台打印对应的信息。当ServletContext里的属性增加、改变、删除时,在服务器控制台打印对应的信息。
要获得以上的功能,监听器必须实现以下3个接口: HttpSessionListener ServletContextListener ServletContextAttributeListener 我们看具体的代码,见示例14-9。 【程序源代码】 1 // ==================== Program Discription ===================== 2 // 程序名称:示例14-9 : EncodingFilter .java 3 // 程序目的:学习使用监听器 4 // ============================================================== 5 import javax.servlet.http.*; 6 import javax.servlet.*; 7 8 public class OnLineCountListener implements HttpSessionListener, ServletContextListener,ServletContextAttributeListener 9 { 10 private int count; 11 private ServletContext context = null; 12 13 public OnLineCountListener() 14 { 15 count=0; 16 //setContext(); 17 } 18 //创建一个session时激发 19 public void sessionCreated(HttpSessionEvent se) 20 { 21 count++; 22 setContext(se); 23 24 } 25 //当一个session失效时激发 26 public void sessionDestroyed(HttpSessionEvent se) 27 { 28 count--; 29 setContext(se); 30 } 31 //设置context的属性,它将激发attributeReplaced或attributeAdded方法 32 public void setContext(HttpSessionEvent se) 33 { 34 se.getSession().getServletContext()。 setAttribute(“onLine”,new Integer(count)); 35 } 36 //增加一个新的属性时激发 37 public void attributeAdded(ServletContextAttributeEvent event) { 38 39 log(“attributeAdded(„” + event.getName() + “‟, „” + 40 event.getValue() + “‟)”); 41 42 } 43 44 //删除一个新的属性时激发 45 public void attributeRemoved(ServletContextAttributeEvent event) { 46 47 log(“attributeRemoved(„” + event.getName() + “‟, „” + 48 event.getValue() + “‟)”); 49 50 } 51 52 //属性被替代时激发 53 public void attributeReplaced(ServletContextAttributeEvent event) { 54 55 log(“attributeReplaced(„” + event.getName() + “‟, „” + 56 event.getValue() + “‟)”); 57 } 58 //context删除时激发 59 public void contextDestroyed(ServletContextEvent event) { 60 61 log(“contextDestroyed()”); 62 this.context = null; 63 64 } 65 66 //context初始化时激发 67 public void contextInitialized(ServletContextEvent event) { 68 69 this.context = event.getServletContext(); 70 log(“contextInitialized()”); 71 72 } 73 private void log(String message) { 74 75 System.out.println(“ContextListener: ” + message); 76 } 77 } 【程序注解】 在OnLineCountListener里,用count代表当前在线的人数,OnLineCountListener将在Web服务器启动时自动执行。当OnLineCountListener构造好后,把count设置为0。每增加一个Session,OnLineCountListener会自动调用sessionCreated(HttpSessionEvent se)方法;每销毁一个Session,OnLineCountListener会自动调用sessionDestroyed(HttpSessionEvent se)方法。当调用sessionCreated(HttpSessionEvent se)方法时,说明又有一个客户在请求,此时使在线的人数(count)加1,并且把count写到ServletContext中。ServletContext的信息是所有客户端共享的,这样,每个客户端都可以读取到当前在线的人数。
从作用域范围来说,Servlet的作用域有ServletContext,HttpSession,ServletRequest. Context范围: ServletContextListener: 对一个应用进行全局监听。随应用启动而启动,随应用消失而消失主要有两个方法: contextDestroyed(ServletContextEvent event) 在应用关闭的时候调用 contextInitialized(ServletContextEvent event) 在应用启动的时候调用 这个监听器主要用于一些随着应用启动而要完成的工作,也就是很多人说的我想在容器
启动的时候干。。。。。。。。。。 一般来说对“全局变量”初始化,如 public void contextInitialized(ServletContextEvent event){ ServletContex sc = event.getServletContext(); sc.setAttribute(name,value); } 以后你就可以在任何servlet中getServletContext().getAttribute(name); 我最喜欢用它来做守护性工作,就是在contextInitialized(ServletContextEvent event) 方法中实现一个Timer,然后就让应用在每次启动的时候让这个Timer工作: 程序代码: public void contextInitialized(ServletContextEvent event){ timer = new Timer(); timer.schedule(new TimerTask(){ public void run(){ //do any things } },0,时间间隔);