版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序员面试分类真题8(总分:100.00,做题时间:120分钟)一、单项选择题(总题数:18,分数:0.00)1.
以下是编写Servlet必须导入的包的是______。
(分数:2.00)
A.java.sql.*
B.java.servlet.*
√
C.java.util.*
D.java.io.*解析:对于选项A,java.sql.*包中主要包含一些访问数据库相关的接口,不是编写Servlet必须导入的包。所以,选项A错误。
对于选项B,java.servlet.*包中主要包含与Servlet相关的接口,是编写Servlet必须导入的包。所以,选项B正确。
对于选项C,java.util.*包中主要包含容器相关的接口,不是编写Servlet必须导入的包。所以,选项C错误。
对于选项D,java.io.*主要包含IO流读取相关的类库。所以,选项D错误。2.
关于下面这段代码的描述正确的是______。
publicclassCard{
privateStringcardid;
publicStringgetCardid(){
returncardid;
}
publicvoidsetCardid(Stringcardid){
this.cardid=cardid;
}
}
(分数:2.00)
A.这个类不符合JavaBean的定义规则,因为没有无参数的构造方法
B.这个类不符合JavaBean的定义规则,方法名setCardid应该改为setcardid
C.这个类符合JavaBean的定义规则
D.这个类不符合JavaBean定义的规则,因为没有实现序列化接口
√解析:JavaBean是一种由Java语言编写的可重用组件,也就是Java类。定义一个JavaBean必须满足以下几个条件:
1)需要有一个公共的、无参数的构造方法。
2)定义实例变量为prirate,同时提供一组public存取方法(getXXX和setXXX)。例如属性name,get方法就要写成publicstringgetName(){},N大写。
3)类必须要能序列化,也就是说必须实现Serializable接口。
从上面分析可知,选项D正确。
对于选项A,当一个类没有构造方法的时候,编译器会提供一个默认的无参数的构造方法。所以,选项A错误。
对于选项B,对于属性的存取方法(getXXX和setXXX),get与set后面第一个字母为大写,因此,题目中的写法是正确的。所以,选项B错误。3.
在J2EE中,属于Web层的组件有______。
(分数:2.00)
A.Servlet
√
B.HTML
C.Applet
D.EJB解析:J2EE(Java2PlatformEnterpriseEdition)是Java平台企业版的简称,是用来开发与部署企业级应用的一个架构,它提供了一种统一的、开放标准的多层平台,该平台主要由构件、服务和通信三个模块构成。
构件包含客户端构件和服务端构件两种类型,其中客户端构件主要包含两类:Applets和ApplicationClients,服务端构件分为两类:Web构件(Servlet与JSP)和EJBs(EnterpriseJavaBeans)。服务由J2EE平台提供商实现,分为ServiceAPI(开发时使用)和运行时服务。通信为由容器提供的支持协作构件之间的通信。
从本质上来讲,J2EE只是一个行业标准,主要用来通过Java开发服务端应用提供一个独立的、可移植的、多用户的企业级平台,从而能够简化应用程序的开发和部署。正是由于J2EE只是一个标准而不是一个成熟的产品,因此,目前有很多不同类型的J2EE服务器。只要开发的应用程序符合J2EE的标准,就都可以部署在遵循了J2EE的开发标准的J2EE服务器上。这种标准,使得开发人员只需要专注于各种应用系统的商业逻辑与架构设计,而不用过多地考虑底层繁琐的程序编写工作,系统的开发与部署效率大幅提升。所以,选项A正确。4.
以下可以替换URL中的sessionID的方法是______。
(分数:2.00)
A.HttpServletRequest接口的encodeURL方法
B.HttpServletResponse接口的encodeURL方法
√
C.HttpServletRequest接口的rewriteURL方法
D.HttpServletResponse接口的rewriteURL方法解析:session译为会话,指的是有始有终的一系列动作/消息,例如在打电话时,从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个session。当程序需要为某个客户端的请求创建一个session时,服务器会首先检查这个客户端的请求里是否已经包含了一个session标识,这个标识被称为sessionID。如果已经包含一个sessionID,则说明以前已经为此客户端创建过session,此时服务器就按照sessionID把这个session检索出来使用(如果检索不到,可能会新建一个);如果客户端请求不包含sessionID,则为此客户端创建一个session,并且生成一个与此session相关联的sessionID。
HttpServletResponse接口提供了重写URL的方法,如下所示:
publicjava.lang.StringencodeURL(java.lang.Stringurl);
该方法的实现机制如下:先判断当前的Web组件是否启用session,如果没有启用session,则直接返回参数url,再判断客户端浏览器是否支持cookie,如果支持cookie,则直接返回参数url;如果不支持cookie,就在参数url中加入sessionID信息,然后返回修改后的url。因此,这个方法可以用来把sessionID加入到URL中。所以,选项B正确。5.
敏捷软件开发方法是一种______。
(分数:2.00)
A.数学观
B.建模观
C.工程观
D.协作观
√解析:敏捷软件开发方法是一种应对快速变化的需求的软件开发能力。它们的具体名称、理念、过程和术语都不尽相同,相对于“非敏捷”,敏捷更强调程序员团队与业务专家之间的紧密仂、作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重作为软件开发中人的作用。所以,敏捷软件开发方法是一种创作与交流的协作观。所以,选项D正确。6.
极限编程XP的核心思想是______。
(分数:2.00)
A.强调文档和以敏捷性应对变化
B.强调建模和以敏捷性应对变化
C.强调设计和以敏捷性应对变化
D.强调人和人之间的合作因素和以敏捷性应对变化
√解析:极限编程(ExtremeProgramming,XP)是一种轻量级的、灵巧的软件开发方法,同时,它也是一种非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气,即任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。它是敏捷开发的典型代表,其核心思想是强调人和人之间的合作因素和以敏捷性应对变化。所以,选项D正确。7.
净室软件工程(Cleanroom)是软件开发的一种形式化方法,可以开发较高质量的软件,它发现和排除错误的主要机制是______。
(分数:2.00)
A.正确性验证
√
B.黑白盒测试
C.集成测试
D.基本路径测试解析:净室软件工程是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术,力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷。它提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制。所以,选项A正确。8.
软件复用是使用已有的软件产品(例如设计、代码和文档等)来开发新的软件系统的过程。为了提高构件(Component)的复用率,通常要求构件具有较好的______。
(分数:2.00)
A.专用性和不变性
B.专用性和可变性
C.通用性和不变性
√
D.通用性和可变性解析:软件复用(SoftwareReuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。为了提高构件的复用率,通常要求构件具有较好的通用性与不变性。所以,选项C正确。9.
逆向工程可用于维护已有的软件,逆向工程能够______。
(分数:2.00)
A.分析源程序,决定需要修改的部分以及其影响的程度
B.能够使用数学方法证明软件功能的正确性
C.分析源程序,从源程序导出程序结构
√
D.将源程序改写成易于理解的、结构清晰的程序解析:逆向工程(ReverseEngineering)也叫反求工程,是根据已有的东西和结果,通过分析来推导出具体的实现方法。比如通过某个exe程序能够做出某种漂亮的动画效果,通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程。不仅仅是反编译,而且还要推导出设计,并且文档化,逆向工程的目的是使软件得以维护。所以,选项C正确。10.
UML类图中类与类之间的关系有5种:依赖、关联、聚合、组合与继承。若A类需要使用标准数学函数类库中提供的功能,那么类A与标准类库提供的类之间存在(Ⅰ)关系;若A类中包含了其他类的实例,且当类A的实例消失时,其包含的其他类的实例也消失,则类A和它所包含的类之间存在(Ⅱ)关系;若类A的实例消失时,其他类的实例仍然存在并继续工作,那么类A和它所包含的类之间存在(Ⅲ)关系;在下面选项中,正确的是______。
(分数:2.00)
A.Ⅰ:依赖、Ⅱ:组合、Ⅲ:聚合
√
B.Ⅰ:关联、Ⅱ:依赖、Ⅲ:组合
C.Ⅰ:关联、Ⅱ:聚合、Ⅲ:组合
D.Ⅰ:关联、Ⅱ:聚合、Ⅲ:依赖解析:依赖、关联、聚合、组合与继承是UML中类之间的几种常见关系,以下将分别对这几种关系进行解释说明。
(1)依赖
一个类A使用到了另一个类B,而这种使用关系是偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。例如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。
(2)关联
关联体现的是两个类或者类与接口之间语义级别的一种强依赖关系,例如你是我的朋友,我也是你的朋友。这种关系比依赖更强,不存在依赖关系的偶然性,关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,关联可以是单向、双向的。
(3)聚合
聚合是关联关系的一种特例,体现的是整体与部分、拥有的关系,即has-a的关系,例如公司与员工、计算机与CPU就是聚合关系。
(4)组合
组合是关联关系的一种特例,体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它体现整体与部分问的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,例如人与心脏。
(5)继承
继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
本题中,依赖是几种关系中最弱的一种关系,通常,使用类库就是其中的一种关系。聚合与组合都表示了整体和部分的关系。组合的程度比聚合高,当整体对象消失时,部分对象也随之消失,则属于组合关系,当整体对象消失而部分对象依然可以存在并继续被使用时,则属于聚合关系。所以,选项A正确。11.
有一段年代久远的C++代码,内部逻辑复杂,现在需要利用其实现一个新的需求,假定有以下可行的方案,应当优先选择______。
(分数:2.00)
A.修改老代码的接口,满足新的需求
B.将老代码抛弃,自己重新实现类似的逻辑
C.修改老代码的内部逻辑,满足新的需求
D.在这段代码之外写一段代码,调用该代码的一些模块,完成新功能需求
√解析:对于老代码的处理措施,既不是将其抛弃,自己重新实现,因为这样做的代价太高昂,也不是去修改其内部逻辑或者代码接口,因为这种修改很有可能会引入更多新的问题,最好的方法是采用封装的思想,将这些已有的老代码当作一个黑盒,重新编写一段新代码完成新的功能,只在需要调用老代码的时候,用到老代码的某些模块即可。所以,选项A、选项B与选项C错误,选项D正确。12.
以下不属于数据库事务正确执行的四个基本要素的是______。
(分数:2.00)
A.隔离性
B.持久性
C.强制性
√
D.一致性解析:本题中,强制性不属于这四种特性。所以,选项C正确。13.
当执行Mysql查询时,只有满足连接条件的记录才包含在查询结果中,这种连接是______。
(分数:2.00)
A.左连接
B.右连接
C.内连接
√
D.全连接解析:在SQL中,内连接也称为自然连接,只有两个表相匹配的行才能在结果集中出现,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配行的所有行,所以,内连接可能会造成信息的丢失。内连接的语法如下:
selectfieldlistfromtablel[inner]jointable2ontable1.column=table2.column
内连接是保证两个表中所有的行都要满足连接条件。与内连接不同的是,外连接不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个连接表(全外连接)中的所有数据行。SQL的外连接共有3种类型:左外连接(关键字为LEFTOUTERJOIN)、右外连接(关键字为RIGHTOUTERJOIN)、全外连接(关键字为FULLOUTERJOIN)。外连接的用法和内连接一样,只是将INNERJOIN关键字替换为相应的外连接关键字即可。
内连接只显示符合连接条件的记录,外连接除了显示符合连接条件的记录外,例如若用左外连接,还显示左表中记录。所以,本题的答案为C。14.
下列关于视图与基本表的对比描述中,正确的是______。
(分数:2.00)
A.视图的定义功能强于基本表
√
B.视图的操作功能强于基本表
C.视图的数据控制功能弱于基本表
D.上面提到的三种功能二者均相当解析:视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表,它是一个虚表。在数据库中,存放的只是视图的定义而已,而不存放数据,这些数据仍然存放在原来的基本表结构中。只有在使用视图的时候才会执行视图的定义,从基本表中查询数据。
视图的作用非常多,主要有以下几点:首先,它可以简化数据查询语句;其次,它可以使用户从多角度看待同一数据;再次,它可以提高数据的安全性;最后,它提供了一定程度的逻辑独立性等。
通过引入视图机制,用户可以将注意力集中在其关心的数据上而非全部数据,这样就大大提高了用户效率与用户满意度,而且如果这些数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分数据来源于其他视图,并且搜索条件又比较复杂时,需要编写的查询语句就会比较繁琐,此时定义视图就可以使数据的查询语句变得简单可行。定义视图可以将表与表之间的复杂的操作连接和搜索条件对用户不可见,用户只需要简单地对一个视图进行查询即可,所以,增加了数据的安全性,但是不能提高查询的效率。
对于选项A,视图可以被定义为多个表的连接,也可以被定义为只有部分列可见,或满足条件的部分行可见,因此,有更强的定义功能。所以,选项A正确。
对于选项B,视图有的操作,表都有,视图一般被用来查找而使用。所以,选项B错误。
对于选项C,视图的数据控制能力要强于表,视图可以被定义为多个表的连接,也可以被定义为只有部分列可见,或满足条件的部分行可见,通过定义不同的存储过程,并授予不同的权限,可以很灵活地对数据进行控制。所以,选项C错误。
对于选项D,自然也就错了。15.
一个关系模式为Y(X1,X2,X3,X4),假定该关系存在着如下函数依赖:
(X1,X2)→X3,X2→X4,则该关系属于______。
(分数:2.00)
A.第一范式
√
B.第二范式
C.第三范式
D.第四范式解析:范化是在识别数据库中的数据元素、关系,以及定义所需的表和各表中的项目这些初始工作之后的一个细化的过程。常见的范式有1NF、2NF、3NF、BCNF以及4NF。以下将分别对这几种范式进行介绍。
1NF,即第一范式,是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。第一范式的模式要求属性值不可再分裂成更小部分,即属性项不能是属性组合或由组属性组成。简而言之,第一范式就是无重复的列。例如,由“职工号”“姓名”“电话号码”组成的表(一个人可能有一个办公电话和一个移动电话),这时将其规范化为1NF可以将电话号码分为“办公电话”和“移动电话”两个属性,即职工(职工号,姓名,办公电话,移动电话)。
2NF,即第二范式,是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称R为第二范式模式。
(如果A是关系模式R的候选键的一个属性,则称A是R的主属性,否则称A是R的非主属性。)例如,在选课关系表(学号,课程号,成绩,学分),关键字为组合关键字(学号,课程号),但由于非主属性学分仅依赖于课程号,对关键字(学号,课程号)只是部分依赖,而不是完全依赖,所以,此种方式会导致数据冗余以及更新异常等问题,解决办法是将其分为两个关系模式:学生表(学号,课程号,分数)和课程表(课程号,学分),新关系通过学生表中的外键字课程号联系,在需要时通过两个表的连接来取出数据。
3NF,即第三范式,如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。例如学生表(学号,姓名,课程号,成绩),其中学生姓名无重名,所以,该表有两个候选码(学号,课程号)和(姓名,课程号),则存在函数依赖:学号→姓名,
(学号,课程号)→成绩,(姓名,课程号)→成绩,唯一的非主属性成绩对码不存在部分依赖,也不存在传递依赖,所以,属于第三范式。
BCNF构建在第三范式的基础上,如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R为BCNF的模式。假设仓库管理关系表(仓库号,存储物品号,管理员号,数量),满足一个管理员只在一个仓库工作;一个仓库可以存储多种物品。则存在如下关系:
(仓库号,存储物品号)→(管理员号,数量)
(管理员号,存储物品号)→(仓库号,数量)
所以,(仓库号,存储物品号)和(管理员号,存储物品号)都是仓库管理关系表的候选码,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库号)→(管理员号)
(管理员号)→(仓库号)
即存在关键字段决定关键字段的情况,所以,其不符合BCNF范式。把仓库管理关系表分解为二个关系表:仓库管理表(仓库号,管理员号)和仓库表(仓库号,存储物品号,数量),这样的数据库表是符合BCNF范式的,消除了删除异常、插入异常和更新异常。
4NF,即第四范式,设R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡多值依赖X→Y时,X必是R的超键,那么称R是第四范式的模式。例如,职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中同一个职工也可能会有多个职工孩子姓名,同样,同一个职工也可能会有多个职工选修课程,即这里存在着多值事实,不符合第四范式。如果要符合第四范式,只需要将上表分为两个表,使它们只有一个多值事实,例如职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只有一个多值事实,所以,符合第四范式。
对于本题而言,这个关系模式的候选键为{X1,X2},因为X2→X4,说明有非主属性X4部分依赖于候选键{X1,X2},所以,这个关系模式不为第二范式。
所以,本题的答案为A。16.
如果关系模式R所有属性的值域中每一个值都不可再分解,并且R中每一个非主属性完全函数依赖于R的某个候选键,则R属于______。
(分数:2.00)
A.第一范式(INF)
B.第二范式(2NF)
√
C.第三范式(3NF)
D.BCNF范式解析:17.
下面哪一选项能提高查询效率______。
(分数:2.00)
A.在Name字段上添加主键
B.在Name字段上添加索引
√
C.在Age字段上添加主键
D.在Age字段上添加索引解析:主关键字(主键,PrimaryKey)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,外键用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。
索引是一种提高数据库查询速度的机制,它是一个在数据库的表或视图上按照某个关键字段的值,升序或降序排序创建的对象。当用户查询索引字段时,它可以快速地执行检索操作,借助索引,在执行查询的时候不需要扫描整个表就可以快速地找到所需要的数据。一条索引记录包含键值和逻辑指针。创建索引时,系统分配一个索引页。在表中插入一行数据,同时也向该索引页中插入一行索引记录。由此可以看出,索引在提高查询效率的同时也增加了插入操作的时间,由此适合在以查询为主的场景使用。
索引的类型有聚簇索引和非聚簇索引。聚集索引是表中的行的物理顺序与键值的逻辑顺序一样,一个表只能有一个聚簇索引。非聚簇索引是数据存储与索引存储不在同一个地方。与非聚簇索引相比,聚簇索引一般情况下可以获得更快的数据访问速度。
创建索引可以大大提高系统的性能,主要表现为以下几个方面:首先,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;其次,通过索引,可以大大加快数据的检索速度;再次,通过索引可以加速表和表之间的连接,从而有效实现数据的完整性;然后,在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间;最后,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引可以有效地提高查询效率,那么为什么不因此而将所有的列都建立索引呢?其实索引尽管可以带来方便,但并非越多越好,过多的索引也会带来许多不利的问题。首先,创建索引和维护索引要耗费时间、空间,当数据量比较小时,这种问题还不够突出,而当数据量比较大时,这种缺陷会比较明显,效率会非常低下;其次,除了数据表占数据空间之外,每一个索引还需要占用一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大,从而造成不必要的空间浪费;最后,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,从而降低了数据的维护速度。
通过以上分析发现,如果需要提高查询速度,可以在经常被查询的字段上创建索引来提高查询效率。对于Name(姓名)和Age(年龄),通常而言,姓名是经常被查询的字段,因此,通过增加索引可以提高查询效率。所以,选项B正确。18.
设有一个关系:DEPT(DNO,DNAME),如果要找出倒数第三个字母为W,并且至少包含4个字母的DNAME,则查询条件子句应写成WHEREDNAMELIKE______
(分数:2.00)
A.'__W_%'
B.'_%W__'
√
C.'_W__'
D.'_W_%'解析:在SQL语言中,%和表示的是通配符(通配符指的是一种特殊语句,用来进行模糊查询的,在匹配字符串时,可以使用它来代替一个或多个真正字符,当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符),其中“%”表示的是0个或多个字符,而“_”表示的是一个字符。
在本题的查找条件中,要求倒数第三个字母为‘W’,所以,字符‘W’后面有两个其他字符,可以表示成“W__”,并且还要求至少包含4个字母,而当以“%”开头时,它表示的字符可以不存在,所以,开头应加一个“_”,那么查询条件子句应写成WHEREDNAMELIKE'_%W__'。
所以,本题的答案为B。
需要注意的是,除了以上介绍的两种通配符以外,SQL语言中还有两个通配符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]表示不在字符列中的任何一个字符。例如,要求从名为“Persons”的表中选取居住的城市以“A”或“L”或“N”开头的人,可以使用下面的SELECT语句:SELECT*FROMPersonsWHERECityLIKE'[ALN]%'。要求从名为“Persons”的表中选取居住的城市不以“A”或“L”或“N”开头的人,可以使用下面的SELECT语句:SELECT*FROMPersonsWHERECityLIKE'[!ALN]%'。二、多项选择题(总题数:12,分数:0.00)1.
下列属于JSP中注释的有______。
(分数:2.00)
A.<!--与-->
√
B./
C./**与**/
D.<%--与--%>
√解析:JSP有两种注释方式:
1)显式注释:“<!--注释内容-->”。因为显式注释会被JSP引擎解释,在客户端HTML文件的源代码中生成同样的注释信息,但不会在HTML页面上显示。所以,选项A正确。
2)隐式注释:可以使用Java语言中的“//”、“/**/”,以及JSP中自己的注释:
“<%--注释内容--%>”。隐式注释和显式注释一样不能在JSP页面显示,但是隐式注释不能在客户端HTML文件的源代码中生成同样的注释信息。所以,选项D正确。2.
下列是JSP作用域的通信对象的有______。
(分数:2.00)
A.application
√
B.Session
√
C.pageContext
√
D.cookie解析:对于选项A,application代表与整个Web应用程序相关的对象和属性,这实质上是跨越多个Web应用程序,包括多个页面、请求和会话的一个全局作用域,因此,可以用作JSP之间进行通信。所以,选项A正确。
对于选项B,session代表与用于某个Web客户端的一个用户体验相关的对象和属性,一个Web会话经常会跨越多个客户端请求,因此,可以用作JSP之间进行通信。所以,选项B正确。
对于选项C,pageContext对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据,因此,可以用作JSP之间进行通信。所以,选项C正确。
对于选项D,cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。它是由Web服务器保存在用户浏览器上的小文件,可以包含有关用户的信息(如身份识别号码、密码等信息),不能用作JSP之间的通信。所以,选项D错误。3.
在javax.Servlet的包中,属于类的是______。
(分数:2.00)
A.Servlet
B.ServletException
√
C.GenericServlet
√
D.ServletContext解析:Servlet和ServletContext是接口,只有GenericServlet和ServletException是类。所以,选项B与选项C正确。4.
以下哪两个是等价的?______。
(分数:2.00)
A.<%=YoshiBean.size%>
B.<%=YoshiBean.getSize()%>
√
C.<%=YoshiBean.getProperty("size")%
D.<JSP:getPropertyid="YoshiBean"param="size"/>
E.<jsp:getPropertyid="YoshiBean"property="size"/>
F.<jsp:getPropertyname="YoshiBean"param="size"/>
G.<jsp:getPropertyname="YoshiBean"property="size"/>
√解析:jsp:getProperty标签用于获取被加载到当前页面中的JavaBean中某个属性的值,它的格式为:
<jsp:getPropertyname=?property=?/>
其中,name:JavaBean的对象名,用于指定从哪个JavaBean中获取属性值;property:JavaBean中的属性名,用于指定获取JavaBean中的哪个属性值。当JavaBean中的属性名为abc时,获取该属性值的方法名为getAbc()。
对于本题而言,在选项D、选项E、选项F与选项G中,只有选项G的写法是合理的,它的功能是获取对象YoshiBean的size属性。
对于选项A,一般不推荐直接访问对象的属性,都是把属性定义为私有的,然后用公有的方法访问。如果size被定义为私有的,那么无法用这种方式来访问。
对于选项B,在JSP中直接调用Java代码,调用对象YoshiBean的getSize方法获取size属性,因此,选项B和选项G是等价的。
对于选项C,一般而言,对象获取属性的方法都是类似getXXX()的写法。getProperty只能被理解为另外一个方法,与获取size属性无关。5.
在Servlet的生命周期中,容器只调用一次的方法是______。
(分数:2.00)
A.getServletConfig
B.service
C.init
√
D.destroy
√解析:由于Servlet运行在容器中,没有main()方法,因此,整个生命周期都是由容器来控制的。简单而言,Servlet的生命周期只有两个状态:未创建状态与初始化状态。这两种状态的转换主要是由三个重要的方法来进行控制:init()、service()和destroy()。其中,init()方法是Servlet生命的起点,用于创建或打开任何与Servlet相关的资源以及执行初始化工作。service()方法是Servlet中真正处理客户端传过来的请求的方法,它根据HTTP请求方法(GET、POST等)将请求分发到doGet()、doPost()等方法。destory()方法释放任何在init()方法中打开的与Servlet相关的资源。
Servlet的状态变化如图所示。
Servlet状态变化
具体而言,SerMet的生命周期可以分为加载、创建、初始化、处理客户请求和卸载五个阶段。
1)加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet。
2)创建:通过调用Servlet的构造方法来创建一个Servlet实例。
3)初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已被创建但向客户端提供服务之前调用的,需要注意的是,init()方法只会被调用一次。
4)处理客户请求:Servlet一旦被创建后,它就可以为客户端提供服务了。每当有新的客户请求到来时,容器都会创建一个新的线程来处理该请求,接着会调用Servlet的service()方法来完成客户端的请求,当然,service()方法会根据请求的method属性值的不同决定是调用doGet()方法还是调用doPost()方法来完成具体的响应。
5)卸载:容器在卸载Servlet之前需要调用destroy()方法,让Servlet自己释放其占用的系统资源,一旦destroy()方法被调用,容器就不会再向这个Servlet发送任何请求消息了。如果容器需要这个Servlet,那么就必须重新创建并初始化一个实例。需要注意的是,destroy()方法只会被调用一次。
本题中,init()方法和destroy()方法只调用一次。所以,选项C与选项D正确。6.
下面有关forward和redirect的描述中,正确的是______。
(分数:2.00)
A.forward是内部重定向,redirect是外部重定向
√
B.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
√
C.执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址
√
D.执行redirect时,服务器端告诉浏览器重新去请求地址
√解析:7.
以下关于Spring框架的描述中,正确的是______。
(分数:2.00)
A.Spring是“依赖注入”模式的实现
√
B.Spring是一个轻量级JAVAEE的框架集合
√
C.使用Spring可以实现声明事务
√
D.Spring提供了AOP方式的日志系统解析:Spring是一个J2EE的框架,这个框架提供了对轻量级的IoC(InverseofControl,控制反转,有时候也叫作依赖注入)良好的支持,同时也提供了对AOP(AspectOrientedProgrammjng,面向切面编程)技术非常好的封装。相比其他框架,spring框架的设计更加模块化,框架内的每个模块都能完成特定的工作,而且各个模块都可以独立地运行,不会相互牵制。因此,在使用Spring框架的时候,开发人员可以使用整个框架,也可以只使用框架内的一部分模块,例如可以只使用springAOP模块来实现日志管理功能,而不需要使用其他模块。
具体而言,Spring框架主要由7个模块组成,它们分别是SpringAOP、SpringORM、SpringDAO、springweb、SpringContext、SpingWebMVC和springCore等。具体如图所示。
Spring框架
下表详细介绍了各个模块的作用。Spring模块模块描述SpringAOP采用了面向切面编程的思想,使Spring框架管理的对象支持AOP,同时这个模块也提供了事务管理,可以不依
赖具体的EJB组件,就可以将事务管理集成到应用程序中SpringORM提供了对现有的ORM框架的支持,例如Hibemate、JDO等SpringDAO提供了对DAO(DataAccessObject,数据访问对象)模式和JDBC的支持。DAO可以实现把业务逻辑与数据
库访问的代码实现分离,从而降低代码的耥合度。通过对JDBC的抽象,简化了开发工作,同时简化了对异常的
处理(可以很好地处理不同数据库厂商抛出的异常)SpringWeb提供了Servlet监听器的Context和Wet)应用的上下文。同时还集成了一些现有的Web框架,例如StrutsSpringContext扩展核心容器,提供了Spring上下文环境,给开发人员提供了很多非常有用的服务,例如国际化、Email和JNDI
访问等SpringWebMVC提供了一个构建Web应用程序的MVC的实现SpringCoreSpring框架的核心容器,提供了spring框架的基本功能。这个模块中最主要的一个组件为BeanFactory,它使用
工厂模式来创建所需的对象。同时BeanFactory使用IOC思想,通过读取XML文件的方式来实例化对象,可以
说BeanFactory提供了组件生命周期的管理,组件的创建、装配和销毁等功能
通过以上分析可以看出,选项A、选项B、选项C的描述都是正确的。对于选项D,Spring并没有提供日志系统,需要根据需求使用AOP的方式,借助Spring与日志系统log4j实现自己的日志功能。因此,选项D错误。8.
下列关于依赖注入的描述中,正确的是______。
(分数:2.00)
A.依赖注入提供使用接口编程
√
B.依赖注入使组件之间相互依赖,相互制约
C.依赖注入能够独立开发各组件,然后根据组件间关系进行组装
√
D.依赖注入指对象在使用时动态注入
√解析:IoC(InverseofControl,控制反转)有时候也被叫作依赖注入,是一种降低对象之间耦合关系的设计思想。一般而言,在分层体系结构中,都是上层调用下层的接口,上层依赖于下层的执行,即调用者依赖于被调用者。而通过IoC方式,使得上层不再依赖于下层的接口,即通过采用一定的机制来选择不同的下层实现,完成控制反转,使得由调用者来决定被调用者。IoC通过注入一个实例化的对象来达到解耦和的目的。使用这种方法后,对象不会被显式地调用,而是根据需求通过IoC容器(例如Spring)来提供。
采用IoC机制能够提高系统的可扩展性,如果对象之间通过显式地调用进行交互,那么会导致调用者与被调用者存在着非常紧密的联系,其中一方的改动将会导致程序出现很大的改动。例如,要为一家卖茶的商店提供一套管理系统,在这家商店刚开业的时候只卖绿茶(GreenTea),随着规模的扩大或者根据具体销售量,未来可能会随时改变茶的类型,例如红茶(BlackTea)等,传统的实现方法会针对茶抽象化一个基类,绿茶类只需要继承自该基类即可。如图1所示。
图1
实现方法1
采用该实现方法后,在需要使用GreenTea的时候,只需要执行以下代码即可:AbstractTeat=newGreenTea(),当然,这种方法是可以满足当前设计要求的。但是该方法的可扩展性不好,存在着不恰当的地方,例如,当商家发现绿茶的销售并不好,决定开始销售红茶时,那么只需要实现一个BlackTea类,并且让这个类继承自AbstractTea即可。但是,在系统中所有用到AbstractTeat=newGreenTea()的地方,都需要被改为AbstractTeat=new.BlackTea(),而这种创建对象实例的方法往往会导致程序的改动量非常大。
那么怎样才能增强系统的可扩展性呢?此时可以使用设计模式中的工厂模式来把创建对象的行为包装起来,实现方法如图2所示。
图2
实现方法2
通过以上方法,可以把创建对象的过程委托给TeaFatory来完成,在需要使用Tea对象的时候,只需要调用Factory类的getTea方法即可,具体创建对象的逻辑在TeaFactory中来实现,那么当商家需要把绿茶替换为红茶的时候,系统中只需要改动TeaFactory中创建对象的逻辑即可。当采用了工厂模式后,只需要在一个地方做改动就可以满足要求,从而增强了系统的可扩展性。
虽然说采用工厂设计模式后增强了系统的可扩展性,但是从本质上来讲,工厂模式只不过是把程序中会变动的逻辑移动到工厂类里面了,当系统中的类较多的时候,在系统扩展的时候需要经常改动工厂类中的代码。而采用IoC设计思想后,程序将会有更好的可扩展性,下面主要介绍Spring框架在采用IoC后的实现方法,如图3所示。
图3
实现方法3
Spring容器将会根据配置文件来创建调用者对象(Sale),同时把被调用的对象(AbstractTea的子类)的实例化对象通过构造方法或set方法的形式注入到调用者对象中。
首先,创建名为SpringConfig.xml的文件。
<beans>
<beanid="sale"class="Sale"singleton="false">
<constrctor-arg>
<refbean="tea"/>
</constrctor-arg>
</bean>
<beanid="tea"class="BlueTea"singleton="false">
</beans>
在实现Sale类的时候,需要按照如下方式实现:
classSale{
privateAbstractTeat;
publicSale(AbstractTeat){
this.t=t;
}
//其他方法就可以使用t了
}
当Spring容器在创建Sale对象的时候,根据配置文件SpringConfig.xml会创建一个BlueTea的对象,作为Sale构造方法的参数。当需要把BlueTea改为BlackTea时只需要修改上述配置文件即可,而不需要修改代码。
在需要Sale的时候,可以通过如下方式来创建Sale对象:
ApplicationContextxtx=newFileSystemXmlApplicationContext("SpringConfig.xml");
Sales=(Sale)ctx.getBean("sale");
上例中,Spring采用IoC的方式来实现把实例化的对象注入到开发人员自定义的对象中,具有较强的可扩展性。
具体而言,IoC主要有以下几个方面的优点:
1)通过IoC容器,开发人员不需要关注对象是如何被创建的,同时,增加新类也非常方便,只需要修改配置文件即可实现对象的热插拔。
2)IoC容器可以通过配置文件来确定需要注入的实例化对象,因此,非常便于进行单元测试。
尽管如此,IoC也有自身的缺点,具体表现为如下两点:①对象是通过反射机制实例化出来的,因此,会对系统的性能有一定的影响;②创建对象的流程变得比较复杂。
通过以上分析可知,只有选项B描述错误,注入降低了组件之间的耦合性,而不是使组件之间相互依赖。
所以,本题的答案为ACD。9.
软件工程里面常用的生命周期模型包括______。
(分数:2.00)
A.瀑布模型
√
B.迭代模型
√
C.原型模型
√
D.增量模型
√解析:软件工程里面常用的生命周期模型包括瀑布模型、迭代模型、快速原型模型和增量模型等。所以,选项A、选项B、选项C、选项D正确。10.
典型的瀑布模型的四个阶段是______。
(分数:2.00)
A.分析
√
B.设计
√
C.编码
√
D.测试
√
E.需求调研
F.实施解析:瀑布模型的核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们白上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
本题强调的是瀑布模型的四个典型阶段,通常是分析、设计、编码和测试。所以,选项A、选项B、选项C、选项D正确。11.
软件的六大质量特性不包括______。
(分数:2.00)
A.功能性
B.可靠性
C.兼容性
√
D.稳定性
√解析:软件的六大质量特性包括功能性、可靠性、可用性、效率、可维护性和可移植性。很显然,兼容性与稳定性不属于软件的六大质量特性。所以,选项C与选项D正确。12.
以下有关聚集索引的描述中,正确的是______。
(分数:2.00)
A.有存储实际数据
√
B.没有存储实际数据
C.物理上连续
√
D.逻辑上连续
√
E.可以用B树实现
F.可以用二叉排序树实现解析:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。数据库中索引可以分为两种类型:聚簇(聚集索引)索引和非聚簇索引(非聚集索引)。
聚集索引:表数据按照索引的顺序来存储,也就是说,索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。正因为索引的数据需与数据物理存储的顺序一致,在一张表上最多只能创建一个聚集索引。聚簇索引一般使用B树来实现。
非聚集索引:表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页、数据行的逻辑指针。为了提高索引的性能,一般采用B树来实现。
所以,本题的答案为ACD。三、论述题(总题数:19,分数:0.00)1.
JSP和Servlet有哪些相同点和不同点?它们之间的联系是什么?
(分数:2.00)__________________________________________________________________________________________
正确答案:(相同点:JSP可以被看作是一个特殊的Servlet,它只不过是对Servlet的扩展,只要是JSP可以完成的工作,使用Servlet都可以完成,例如,生成动态页面。由于JSP页面最终要被转换成Servlet来运行,因此,处理请求实际上是编译后的Servlet。
不同点:①Servlet的实现方式是在Java语言中嵌入HTML代码,编写和修改HTML非常不方便,所以,它比较适合做流程控制、业务处理,而JSP的实现方式为在HTML中嵌入Java代码,比较适合页面的显示。例如在Struts框架中,SerMet位于MVC设计模式的控制层,而JSP位于视图层。②Servlet中没有内置对象,JSP中的内置对象都必须通过HttpServletRequest对象、HttpServletResponse对象以及HttpServlet对象得到。)解析:2.
HTML的Form和xForm的区别是什么?
(分数:2.00)__________________________________________________________________________________________
正确答案:(HTML的Form(表单)是一个包含表单元素的区域。表单元素是允许用户在表单中(比如文本域、下拉列表、单选框和复选框等)输入信息的元素。表单使用表单标签(<form>)定义,例如<form><input/></form>。
而XForm是下一代HTML表单标准,它比HTML提供更加灵活和丰富的表单控件,同时,它要比HTML更加规范、有更高的可用性。它使用XML来定义数据,同时也使用XML来存储及传递数据。它最特殊的一点是分隔表单的数据模型、视图和控制器,数据与表单表示的分离,使得代码更加清晰,维护更加容易。数据模型可以使用静态的XML数据,也可以是后端的WebService或URL提供。)解析:3.
Servlet和CGI的区别是什么?
(分数:2.00)__________________________________________________________________________________________
正确答案:(HTML只能用来保存静态内容,而通常情况下,静态页面很难满足实际应用的需要,鉴于此,提出了动态页面的概念。所谓动态页面,指的是能够根据不同时间、不同用户而显示不同内容的页面,例如常见的论坛、留言板、电子商务网站等都是通过动态页面来实现的。那么如何才能生成动态页面呢?其中一种方法是采用CGI(CommonGatewayInterface,公共网关接口)。CGI是一种用Perl脚本、Shell脚本或C语言编写的程序,它可以用来生成动态页面,即每次客户端浏览器访问某一页面时,可以看到不同的内容。CGI应用开发比较困难,一般会要求程序员有处理参数传递知识的能力,而且,CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。而另外一种方式则是采用Servlet技术。
Servlet是采用Java语言编写的服务器端程序,它运行于Web服务器的Servlet容器中,其主要功能是提供请求/口向应的Web服务模式,可以生成动态的Web内容,而这正是HTML所不具备的功能。
与其他生成动态页面的技术相比,Servlet有诸多优点,具体而言,主要表现在如下几个方面:
1)较好的可移植性:由于Java语言具有跨平台和可移植性强的特点,使得Servlet也有较好的可移植性,即无须修改代码就可以部署到多种不同类型的Web服务器上。
2)执行效率高:由于CGI针对每个请求都会创建一个进程来处理,而Servlet针对每个请求创建一个线程来执行,而创建线程比创建进程的开销要小,所以,与CGI相比,Servlet在交互过程中有更短的响应时间,响应效率更高。
3)功能强大:Servlet可以与Web服务器进行交互,而CGI却无法与Web服务器直接交互。
4)使用方便:Servlet提供了许多非常有用的接口用来读取或设置HTTP头消息、处理Cookie和跟踪会话状态等。
5)可扩展性强。由于Servlet是由Java语言编写的,所以,它具备了Java语言的所有优点。Java语言是健壮的、面向对象的编程语言,很容易扩展,Servlet自然也具备这样的优点。)解析:4.
四种会话跟踪技术是什么?
(分数:2.00)__________________________________________________________________________________________
正确答案:(在开发Web应用程序的时候,经常需要能够做到数据共享或者在不同页面之间可以传递参数,而且,一个会话中的数据可能会在不同的地方使用,因此,就需要有专用的机制来传递和保存这些数据。
所谓会话,指的是从客户端打开与服务器的连接并发出请求到服务器响应客户端请求的全过程。会话跟踪则是对同一个用户对服务器的连续的请求和接受响应的监视,由于客户端与服务器端之间是通过HTTP协议进行通信的,而HTTP协议本身是无状态协议,它不能保存客户的信息,即一次响应完成之后连接就断开了,在下一次的请求时,需要重新建立连接,等到建立完连接后还需要判断是否是同一个用户,所以,要想对会话的过程进行监控,最好的方法就是通过会话跟踪技术。
具体而言,会话跟踪技术主要有如下四种:
1)page代表与一个页面相关的对象和属性。一个页面由一个编译好的JavaServlet类(可以带有任何的include指令,但是没有include动作)表示。这既包括Servlet又包括被编译成Servlet的JSP页面。
2)request代表与Web客户端发送的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件。
3)session代表与用于某个Web客户端的一个用户体验相关的对象和属性,一个Web会话经常会跨越多个客户端请求。
4)application代表与整个Web应用程序相关的对象和属性,这实质上是跨越多个Web应用程序,包括多个页面、请求和会话的一个全局作用域。)解析:5.
JSP有哪些内置对象和动作?
(分数:4.00)__________________________________________________________________________________________
正确答案:((1)内置对象
在JSP中,内置对象又称为隐含对象,是指在不声明和创建的情况下就可以被使用的一些成员变量。JSP一共提供有9个内置对象,分别是request(请求对象)、response(响应对象)、pageContext(页面上下文对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、config(配置对象)、page(页面对象)与exception(例外对象)。其具体的描述见下表。内置对象名称描述request客户端请求,此请求包含来自GET/POST请求的参数。客户端的请求信息被封装在request对象中,通过它才能了
解到客户的需求,然后做出响应,因此,request对象是用来获取请求参数的:作常重要途径。它是HttpServletRequest
类的实例response用来表示服务器端对客户端的响应,将Web服务器处理后的结果返回给客户端。但在JSP中很少直接使用到它。它
是HttpServletResponse类的实例pageContext提供了对JSP页面所有的对象及命名空间的访问,也就是说,用它可以访问到本页面中所有其他的对象,例如前面
已经描述的request、response,以及后面要介绍的session和application对象等。它的本类名也叫pageContextSeSSlon用来表示客户端与服务器的一次会话。从客户端与Web服务器建立连接的时候会话开始,直到关闭浏览器时结束会
话。它是HttpSession类的实例application代表JSP所属的Web应用本身。application对象可以存放全局变量,因此,可以实现用户间的数据共享。它的生命
周期与服务器的生命周期一致,也就是说,当服务器启动后,这个对象被创建出来,直到服务器停止后这个对象的生
命周期才结束。在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。它是ServletContext类的实例out用于在客户端浏览器内输出信息。它是JspWriter类的实例config主要作用是取得服务器的配置信息。当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet,
Servlet可以使用这个对象获取所需的配置信息page表示当前JSP页面,类似于Java语言中的this指针。它是java.lang.Object类的实例exceptmn用来表示异常。当一个页面在运行过程中发生了例外,就会产生这个对象。如果JSP需要使用这个对象就必须把
isErrorPage设为true,否则无法编译。它是java.lang.Throwable的对象
根据它们作用的不同,可以将以上九个内置对象分为四类:第一类,与Servlet有关的page和config;第二类,与Input/Output有关的out、request和response;第三类,与Context有关的application、session和pageContext;第四类,与Error有关的exception。
(2)内置动作
JSP使用动作来实现动态地插入文件、实现重定向和对JavaBean的引用等功能。它一共有6个基本动作:jsp:include、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:forward与jsp:plugin。以下将分别对这些动作进行具体介绍。
jsp:include:用来在页面被请求的时候引入一个文件。include指令是在JSP文件被转换成Servlet的时候引入文件,而jsp:include插入文件的时间是在页面被请求的时候,而且被引用文件不能包含某些JSP代码(例如不能设置HTTP头)。使用示例如下:
<jsp:includepage="test.jsp"flush="true">
<jsp:paramname="name"value="value"/>
</jsp:include>
以上代码表示在当前文件中可以引入test.jsp文件。
jsp:useBean:用来寻找或者实例化一个JavaBean。它使得开发人员既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。使用示例如下:
<jsp:useBeanid="car"scope="session"class="com.Car">
以上代码表示实例化了一个com.Car类的实例。
jsp:setProperty:用来设置已经实例化的Bean对象的属性。使用示例如下:
<jsp:setPropertyname="car"property="colour"value="red"/>
以上代码用来设置名字为car的实例的colour属性为red。
jsp:getProperty:用来获取某个JavaBean的属性。使用示例如下:
colour=<jsp:getPropertyname="car"property="colour"></jsp:getProperty>
以上代码用来获取名字为car的实例的colour属性。
jsp:foward:用来把请求转到一个新页面。使用示例如下:
<jsp:forwardpage="/Servlet/login"/>
以上代码把当前页面重定向到/Servlet/login来处理。
jsp:plugin:用于在浏览器中播放或显示一个对象。使用这个动作能插入所需的特定浏览器的OBJECT或EMBED元素来指定浏览器运行一个JAVAApplet所需的插件。使用示例如下:
<jsp:plugintype="applet"codebase="/ch5"code="Hello.class"height="40"width="320">
以上代码用来在浏览器中运行一个applet插件。)解析:6.
forward和redirect的区别是什么?
(分数:2.00)__________________________________________________________________________________________
正确答案:(在设计Web应用程序的时候,经常需要把一个系统进行结构化设计,即按照模块进行划分,让不同的Servlet来实现不同的功能,例如可以让其中一个Servlel接收用户的请求,另外一个Servlet来处理用户的请求。为了实现这种程序的模块化,就需要保证在不同的Servlet之间可以相互跳转,而Servlet中主要有两种实现跳转的方式:forward方式与redirect方式。
forward是服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而客户端并不知道,因此,在客户端浏览器的地址栏中不会显示转向后的地址,还是原来的地址。由于在整个定向的过程中用的是同一个request,因此,forward会将request的信息带到被定向的JSP或Servlet中使用。
redirect则是客户端重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重新发送请求,因此,浏览器中会显示跳转后的地址。同时由于这种方式比forward方式多了一次网络请求,所以,forward效率更高。需要注意的是,客户端重定向可以通过设置特定的HTTP头或者写JavaScript脚本实现。下图可以更好地说明它们的区别。
forward和redirect区别
鉴于以上区别,一般当forward方式可以满足需求时,尽可能地使用forward方式。但在有些情况下,例如,需要跳转到一个其他服务器上的资源,则必须使用redirect方式。
引申:filter的作用是什么?主要实现什么方法?
filter使用户可以改变一个request并且修改一个response。filter不是一个Servlet,不能产生一个response,而能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response。filter其实是一个“servletchaining”(servlet链)。
一个filter包括:
1)在Servlet被调用之前截获。
2)在Servlet被调用之前检查ServletRequest。
3)根据需要修改Request头和Request数据。
4)根据需要修改Response头和Response数据。
5)在Servlet被调用之后截获。)解析:7.
Web服务器与Web应用服务器有什么区别?
(分数:2.00)__________________________________________________________________________________________
正确答案:(Web服务器指的是提供Web功能的服务器,主要就是HTTP服务器,包括图片的下载等一系列和文本相关的内容。Web服务器支持以HTTP协议的方式来访问,当Web服务器接收到一个HTTP请求时,它同样会以HTTP协议格式返回一个响应,这个响应可以是一个静态的HTML页面,也可以是经过处理的一个动态的页面,还可以是音频、视频等信息。为了处理一个请求,Web服务器可以做出一个响应,并进行页面跳转,或者把动态响应的产生委托给一些其他的程序,例如CGI脚本、JSP、Servlet或者一些其他的服务器端程序。Web服务器一般都使用了一些特有的机制(例如容错机制)来保证Web服务器有较好的扩展性和不间断地提供服务。常见的Web服务器有IIS和Apache。
应用服务器提供访问业务逻辑的途径以供客户端应用程序使用。具体而言,它通过HTTP、TCP/IP、IIOP(InteRNetInter-ORBProtocol,互联网内部对象请求代理协议)或JRMP(JavaRemoteMethodProtocol,Java远程方法协议)等协议来提供业务逻辑接口。为了系统的可靠性,同样使用了一些可扩展性和容错机制。除此之外,它还为应用的开发提供了许多服务,例如事务管理、安全管理和对象生命周期管理等。常见的应用服务器有BEAWebLogicServer、IBMWebSphereApplicationServer、IPlanetApplicationServer、Oracle9iApplicationServer、JBoss和Tomcat等。
Web服务器一般是通用的,而应用服务器一般是专用的,例如Tomcat只能处理Java应用程序而不能处理ASPX或PHP。需要注意的是,Web服务器与应用服务器是并列关系,二者不存在相互包容关系。在使用的时候,如果访问的页面只有HTML,用Web服务器就足够了,但是如果是JSP,此时就需要应用服务器,因为只有应用服务器才能解析JSP里的Java代码,并将解析结果以HTML的格式返回给用户。)解析:8.
请简要介绍SpringMVC和AOP。
(分数:2.00)__________________________________________________________________________________________
正确答案:(以下将分别对SpringMVC、IoC、AOP进行解释说明。
(1)SpringMVC
SpringMVC是在Spring框架上发展起来的框架,它提供了构建Web应用程序的全功能MVC模块,使用了Spring可插入的MVC架构,可以自由地选择各个模块所使用的架构,非常灵活。例如可以选择使用内置的SpringWeb框架,也可以选择使用Struts的Web框架。通过策略接口,Spring框架是高度可配置的。它包含多种视图技术,例如JavaServerPages(JSP)技术和Velocity模板引擎等。对于SpringMVC框架而言,它并不知道具体使用了哪个视图。SpringMVC把控制器、模型、分派器以及处理程序对象的角色进行了分离,因此,SpringMVC有更好的可定制性。
(2)AOP
AOP(AspectOrientedProgramming,面向切面编程)是对面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态地修改模型从而满足新的需求。例如,在不改变原来业务逻辑模型的基础上,可以动态地增加日志、安全或异常处理的功能。
下面介绍一个在Spring中使用AOP编程的简单例子。
1)创建一个接口以及实现这个接口的类。TestAOPIn.java内容如下:
publicinterfaceTestAOPIn{
publicvoiddoSomething();
TestAOPImpl.java内容如下:
publicclassTestAOPImplimplementsTestAOPIn{
publ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某电力公司十五五源网荷储多Agent协调控制与虚拟电厂平台建设方案
- 第一讲-机械设计课程设计
- 国际经济法专题课件 全球合作原则
- 2026年新高考全国卷化学冲刺模考易错点含解析
- 工业炉及电炉电气控制装调工岗前安全规程考核试卷含答案
- 竹藤家具制作工成果转化能力考核试卷含答案
- 2025年3D打印食品的文化特色与创新设计
- 有机合成工操作水平能力考核试卷含答案
- 钠离子电池发展路线
- 短视频制作-教学大纲
- 2026年广东广州市高三二模高考语文试卷试题(含答案详解)
- 2026年上海市徐汇区初三语文二模试卷及答案(详解版)
- 2026中航西安飞机工业集团股份有限公司校园招聘笔试历年难易错考点试卷带答案解析
- 2026届黑龙江省齐齐哈尔市中考押题化学预测卷(含答案解析)
- 司法鉴定内部复核制度
- CJT 546-2023 生活垃圾焚烧烟气净化用粉状活性炭
- 2025年妇科腹腔镜考试题及答案
- GB/T 22107-2025气动方向控制阀切换时间的测量
- 新22J01 工程做法图集
- 2025年浙江省杭州市萧山区高桥初中教育集团中考英语调研试卷(3月份)
- 2025届新高考地理热点复习 天气系统与气象灾害-以湖北冻雨为例
评论
0/150
提交评论