Java笔试面试宝典_第1页
Java笔试面试宝典_第2页
Java笔试面试宝典_第3页
Java笔试面试宝典_第4页
Java笔试面试宝典_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EJB

1:EJB:

答:EnterpriseJavaBean相当于DCOM,即分布式组件。它是基于Java的远

程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。

但EJB必须被布署在诸如Wcbspcrc、WcbLogic这样的容器中,EJB客户从大直

接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB

组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

答:Enterprisejavabean容器。更具有行业领域特色。他提供给运行在其中

的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被

容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如

邮件服务、事务管理。

RMI:(RemoteMethodInvocation)远程方法调用

答:RMI(RemoteMethodInvocation,远程方法调用)是用Java在JDK1.1

中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风察一

时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能

力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方

案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地

应用于分布式对象系统。而JavaRMI则支持存储于不同地址空间的程序级对

象之间彼此进行通信,实现远程对象之间的无缝远程调用。

2:EJB种类、作用

答:EntityBean用于描述一个永久的对象。

SessionBean——描述任务或者工作流的模型,并且协调Bean之间的交互。

Message-DriverBean——用在基于J2EE应用程序中处理异步JMS消息。

3:实体bean,CMP,BMP写法区别?

答:CMPentitybean不需要在bean中编写数据库操作的代码;可以让容器做

这件事。

BMPentitybean在bean类中直接编写数据库调用,以及对固定存储的

任意类型的访问,来管理bean的持久性。

4:Find与Select方法的区别?

答:

FinderSelect

单个或者多个(集合或集)对象.

是该bean类型或CMR相关类型

单对象或者集合,是该bean类型的EJBObject(s)或

EJBObject(s),EJBLocalObject(s).EJBLocalObject(s)也可能是

CMP(域),CMP的集合或一个CMR

域,

在远程和/或本地home接口中Bean类中的抽象方法

FindXxx()EjbSclectXxx一bean类

见面向entitybean类内部,供其他

公开给客户端

度bean方法使用

实当前实例,但若调用来自home方

Bean池任意随机bean实例

例法则为任意随机实例.

5:主接口方法的定义与写法?

答:生命周期方法建方法-该方法的返回值是bean的组件接口,

写法为creatXxx

无状态sessionbean必须个且仅有一个无参的创建方法.

有状态sessionbean必须含有至少一个创建方法.Entitybean可以有0至多个

创建方法.

Finder方法-Finder方法对于entitybean有效,通过它可以在数据库中查找到

entitybean对应的持久性数据.每一个entitybean的home接口必须有一个

findByPrimaryKey方法,并以实体的主键为参数.可以定制Finder方法.Home方

法-Home方法也仅对entitybean有效.Home方法能够返回任意类型的序列叱对

象,但并不实际生成bean的实例.

6:主接口与组件接口的区别?

答:主接口提供EJB客户端对bean的访问.定义了bean的生命周期方法,

并提供「bean的基本生命周期管理功能,如创建,删除,查找.messagedrivern

bean不含有home接口.组件接口是由enterprisebean的客户端用来取得bean

的访问能力.它定义了对于客户端可见的业务方法.组件接口中的业务方法必须

符合bean类中的实现.

7、JMS消息传递的方式?

答:点到点(point-to-point)消息通过队列进行发送.发布与订阅

(publish-and-subscribe,pub/sub)消息通过标题传递.

8、EJB客户端访问后台EJB的代码?

答:pl92,pl93

9、有状态sessionbean与无状态sessionbean的区别?

答:statefulsessionbean维护客户端会话状态.它们必须属于一个且只属于

一个客户端.激活/钝化,开销大.statelesssession不维护一个客户端的会话状

态它们被放入实例池中,因此可被多个用户共用,开销小,效率高。

10、本地视图与远程视图的区别?

答:远程视图-它的想法就是远程调用将在两台不同JVM之间执行.远程

调用这些操作使得相关网络开销会更高与对象的位置无关.也不会在乎是否在一

个JVM.

本地视图-它的想法就是本地调用将在相同的JVM中执行.没有网络开销.操作效

率更高,因为客户端使用本地对象调用bean上的服务,限制在本地实现中,而且

不需要做到与位置无关.

11:CMT事物属性

Transaction

aienttTransactionAuodModwithEJB

Method

Mandatory*Exception

AA

Never•

AException

Required•B

AA

ReciulresHev-A

AB

Support*••

AA

Notdupported••

A•

Mandatoc,-当使用这个值时,bean方法被调用时必须有一个事务已经处在运行

中.

Never-如果在现有事务中调用此bean,容器将抛吕Java.rmi.RemolException.

Required-bean方法必须总是在事务上下文中执行.

RequiresNew-当方法被调用的时候,bean总会需要启动一个新的事务

Supports可以参与到正在运行的事务中,但这个事务并不是必须的.

NotSupported-该值意味着在事务中bean或者方法根本不能被调用.

12:事务属性ACID

答:原子性一一一个事务要么完全执行,要么根本不执行。

一致性一一一个事务在它完成后不能留下系统的不一致性。

隔离性一一所有的事务不许允许在执行的时候不受其他进程或者事务的干涉。

持久性一一在事务期间,所有提交的变更数据必须写入持久的数据存储器,

并且应该能在硬件和软件失效中保存下来。

13:实体Bean的三个状态:

答:no-stateBean实例还没有创建。

pooled——Bean实例被创建,但还没有和一个叮BObject关联。

ready与EJBObject相关联。若断开关联则回到pooled。

14:JMS、JMS消息模型

答:JavaMessageService(JMS)是一个JAVAAPI,用来访问面向消息中间件(MOM)

服务。JMS为Java程序生成、发送、接收和读取异步消息提供通用的方法。

JMS模型:点到点和发布与订阅

point-to-point——消息通过队列进行发送。消息由消息生产者(客

户端)放入队列中。消息消费者有责任从队列中取出消息。当给定的

消息只能被给定的消费者接收时,使用P2P。这种情况下,该给定信

息只有一个消费者。

Publpub/sub)消息通过标题传递。由

生产者将消息发布为标题。消息可以被任何订阅该标题的消费者收到。

通过这种方法,一个消息可以被多个消费者接收或处理。

15:EJB客户端类型

答:①Sessionbean②servlet③java应用④JavaApplet⑤非Java客户端

16:ORM

答:ORM对象-关系映射(Object-RelationMapping)模式是指在单个组件中负责

所有实体域对象的持久化,封装数据访问细节

17:EJB是基于哪些技术实现的?

EJB包括SessionBean>EntityBean、MessageDrivenBean,基于JNDI、

RMI>JAT等技术实现。

18:说出SessionBean和EntityBean的区别

SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访

问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。

对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的

业务逻辑。

对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器

中的实体的对象视图,或是一个由现有企业应用程序实现的实体。

19:StatefulBean和StatelessBean的区别。

SessionBean还可以再细分为StatefulSessionBean与StatelessSession

Bean,这两种的SessionBean都可以将系统逻辑放在method之中执行,不同

的是StatefulSessionBean可以记录呼叫者的状态,因此通常来说,一个使

用者会有一个相对应的StatefulSessionBean的实体。StatelessSession

Bean虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者

呼叫StatelessSessionBean的时候,EJBContainer并不会找寻特定的

StatelessSessionBean的实体来执行这个methodo换言之,很可能数个使用

者在执行某个StatelessSessionBean的methods时,会是同一个Bean的

Instance在执行。从内存方面来看,StatefulSessionBean与Stateless

SessionBean比较,StatefulSessionBean会消耗J2EEServer较多的内

存,然而StatefulSessionBean的优势却在于他可以维持使用者的状态。

20:EJB与JAVABEAN的区别?

JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何

一个Java类都可以是一个Beano但通常情况下,由于JavaBean是被容器所创

建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,另外,通常Java

Bean还要实现Serializable接口用于实现Bean的持久性。JavaBean实际上相

当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。

EnterpriseJavaBean相当于DCOM,即分布式组件。它是基于Java的远程方

法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB

必须被布署在诸如Webspere、呢bLogic这样的容器中,EJB客户从不直接访问

真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件

由容器所创建和管理。客户通过容器来访问真正的EJB组件。

21:EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事

务的?

ScssionBean:StatelessSessionBean的生命周期是由容器决定的,当客户机

发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实

例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调

用一个StatefulSessionBean时,容器必须立即在服务器中创建一个新的Bean

实例,并关联到客户机上,以后此客户机调用StatefulSessionBean的方法

时容器会把调用分派到与此客户机相关联的Bean实例。

EntityBean:EntityBeans能存活相对较长的时间,并且状态是持续的。只要

数据库中的数据存在,Entitybeans就一直存活。而不是按照应用程序或者服

务进程来说的。即使EJB容器崩溃了,Entitybeans也是存活的。EntityBeans

生命周期能够被容器或者Beans自己管理。

E.JB通过以下技术管理实务:对象管理组织(0MG)的对象实务服务(OTS),Sun

Microsystems的TransactionService(JTS)、JavaTransactionAPT(JTA),

开发组(X/Open)的XA接口。

22.EJB有哪些角色和对象

一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同

的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证

彼此之间的兼容性。这六个角色分别是EJB组件开发者(EnterpriseBean

Provider)、应用组合者(ApplicationAssembler)、部署者(Deployer)、

EJB服务器提供者(EJBServerProvider)、EJB容器提供者(EJBContainer

Provider)、系统管理员(SystemAdministrator)

三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类

23.EJB容器提供的服务有哪些?

主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行

管理等服务。

24.EJB的几种类型

会话(Session)Bean,实体(Entity)Bean消息驱动的(MessageDriven)

Bean

会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种

实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种

25.EJB需直接实现它的业务接口或Home接口吗,请简述理由。

远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程

序运行中对应实现类会作为对应接口类型的实例被使用。

26.在J2EE内,WAR和EAR文件分别代表什么。

WAR:Web归档;包含一个web工程所有组件的压缩文件。

EAR:企业归档;包含一个企业应用所有组件的压缩文件。

Hibernate

1.Hibernate的检索方式

答:①导航对象图检索②OID检索③HQL检索④QBC检索⑤本地SQL检索

2.Forward与Global-Forward的区别

答:Forward是根据Actionreturn的值找到对应的JSP页。当多个Action共

同return同一个值时,可将这个Forward元素写在Global-Forward中。

3.持久化对象的三种状态,代表含义。

答:临时状态一一刚用new语句创建,未被持久化,不处于session的缓存中。

持久化状态一一已经被持久化,处于session的缓存中。

游离态一一已经被持久化,但不处于session的缓存中。

4、三种检索策略是什么,分别适用于哪种场合?

答:立即检索一一

优点:对应用程序完全透明,缺点:select语句数目多。适用:类级别。

延迟检索一一

优点:由应用程序决定加载哪些对象,可以避免执行多余的select语句以及避

免加载不需要访问的对象,节省内存空间,提高检索效率。

缺点:应用程序如果要访问游离态的代理类实例,必须保证它在持久化时已经

被初始化。

适用:一对多或多对多关联。应用程序不需要立即访问或者根本不会访问的对

象。

迫切左外连接检索:

优点:对应用程序完全透明,不管对象处于持久化状态还是游离状态,应用程序

都可以方便的从一个对象导航到另一个与它相关联的对象。使用了外连接,

select语句数目少。

缺点:可能会加载程序不许要访问的对象。复杂的数据库表连接形象检索性能。

适用:一对一或多对一关联。应用程序需要立即访问的对象。数据库系统具有良

好的表连接性能。

4、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)

答:域模型是面向对象的,关系模型是面向关系的。

域模型中有继承关系,关系模型中不能直接表示继承关系。

域模型中有多对多关联关系,关系模型中通过连接表来表示多对多关联关系。

域模型中有双向关联关系,关系模型中只有单向参照关系,而且总是many参照

one方。

域模型提倡精粒度模型,关系模型提倡粗粒度模型。

5、映射继承关系的三种方式?P424

答:(1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包

含和具体类属性对应的字段,还包括与具体类的父类属性对应的字段。

(2)继承关系树的根类对应•张表:在根类对应的表中,不仅包括根类属性对

应的字段,

还包括根类的所有子类属性对应的字段。

(3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对

应的字段,子类的表参照父类对应的表。

6、Session的find。方法以及Query接口的区别。

答案Session类的find。方法以及Query接口都支持HQL检索方式。这两者的

区别在于,前者只是执行一些简单HQL查询语句的便捷方法,它不具有动态绑定

参数的功能,而且在Hibcrnatc3.x版本中,已经淘汰了find。方法;而Query

接口才是真正的HQL查询接口,它提供了以上列出的各种查询功能。

7.ibernate的配置文件(hibernate,properties)中

hibernate.show_sql=true/flase

在开发阶和测试段应设置为()在发布阶段应设置为():true\false

8.映射一对多双向关联关系中设置SET元素:

请写出级联保存和更新、级联删除应在set元素中需要设置那些子元素?(标明

关系、避面重复执行多余SQL语句)

Namecascadekeycolumnone-to-manyinverse

9.list要的实现类有那些?并按照存储结构、机制简单的说一下。

LinkedList、ArryList>Vector©

LinkedList采用链表数据结构、AbyList代表大小可变的数组。

Vector与ArryList功能比较相似,区别在于Vector采用同步、ArryList没有

采用。

10:以下哪个不是Hibernate的检索方式:

A、导航对象图检索B、0ID检索C、ORM检索

D、QBC检索E、本地SQL检索F、HQL检索

答案:C

11.持久化类的类名是Customer.java,写出相应的映射文件名

O

答案;Customer,hbm.xml

12.继承的三种方式

(1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包含和

具体类属性对应的字段,还包括与具体类的父类属性对应的字段。

(2)继承关系树的根类对应一张表:在根类对应的表中,不仅包括根类属性对

应的字段,还包括根类的所有子类属性对应的字段。

(3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对

应的字段,子类的表参照父类对应的表。

13.Session接口是Hibernate应用使用最广泛的接口。Session也被称为持久

化管理器,它提供了和持久化相关的操作,如添加、更新、删除、加载和查询

对象。

14.请简述Session的特点有哪些?

答案:

(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个

Session实例。

(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多

的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户

请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。

(3)在Session中,每个数据库操作都是在一个事务(transaction)中进行的,

这样就可以隔离开不同的操作(甚至包括只读操作)。

12、Hibernate中采用XML文件来配置对象-关系映射的优点有那些?

答案:Hibernate既不会渗透到上层域模型中,也不会渗透到下层数据模型中。

软件开发人员可以独立设计域模型,不必强迫遵守任何规范。数据库设计人员可

以独立设计数据模型,不必强迫遵守任何规范。对象-关系映射不依赖于任何程

序代码,如果需要修改对象-关系映射,只需修改XML文件,不需要修改任何程

序,提高了软件的灵活性,并且使维护更加方便。

13、在Hibernate应用中Java对象的状态有哪些?

答案:

1临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于Session

的缓存中。处于临时状态的Java对象被称为临时对象。

2持久化状态(persistent):已经被持久化,加入到Session的缓存中。处于

持久化状态的Java对象被称为持久化对象。

3游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于

游离状态的Java对象被称为游离对象。

14、叙述Session的缓存的作用

答案:

(1)减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比

到数据库中查询数据的速度快多了,因此Sessior.的缓存可以提高数据访问的性

能。

(2)保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象

的状态发生了变换,Session并不会立即执行相关的SQL语句,这使得Session

能够把几条相关的SQL语句合并为一条SQL语句.以便减少访问数据库的次数,

从而提高应用程序的性能。

15、比较Hibernate的三种检索策略优缺点;

答案:

1立即检索;

优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应

用程序都可以方便的从一个对象导航到与它关联的对象;

缺点:1.select语句太多;2.可能会加载应用程序不需要访问的对象白白浪

费许多内存空间;

2延迟检索:

优点:

由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,

以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节

省内存空间;

缺点:

应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已

经被初始化;

3迫切左外连接检索

优点:

1对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程

序都可以方便地冲一个对象导航到与它关联的对象。

2使用了外连接,select语句数目少;

缺点:

1可能会加载应用程序不需要访问的对象,白白浪费许多内存空间:2复杂

的数据库表连接也会影响检索性能;

16、多个事务并发运行时的并发问题有哪些?

答案第一类丢失更新;脏读;虚读;不可重复读;第二类丢失更新;

17、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)

答:域模型是面向对象的,关系模型是面向关系的。域模型中有继承关系,关

系模型中不能直接表示继承关系。域模型中有多对多关联关系,关系模型中通过

连接表来表示多对多关联关系。域模型中有双向关联关系,关系模型中只有单向

参照关系,而且总是many参照。ne方。域模型提倡精粒度模型,关系模型提倡

粗粒度模型。

18、session的清理和清空有什么区别?

session清理缓存是指按照缓存中对象的状态的变化来同步更新数据库;清空是

session关闭;

19.请简述Session的特点有哪些?

答案:

(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个

Session实例。

(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多

的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户

请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。

(3)在Session中,每个数据库操作都是在一个事务(transaction)中进行的,

这样就可以隔离开不同的操作(甚至包括只读操作)。

20.如下图A、B、C请添上字段,通过表C建立表A、表B的双向关系(要

求简单连线)

表B

表A

表c

Jsp&servlet

1三个Statment区别,用法

Statment,基本的;PreparedStatement是可编译的,提高效率,

callablcstatmcnt,存储过程

2Cookie

答:临时cookie存在于内存中,(公话),长时cookie存在于硬盘上长时coolkie

和临时cookie路径问题

3servlet调试方式几种方法

答:使用打印语句,使用TOMCAT日志,返回错误页面,使用IDE集成,重起服

务器,直接查看HTML源代码,分别处理请求和响应数据。

4.Cookie与session的区别是:session为短对话,Cookie可以设置任意时间

的有效期。

5.Get请求和Post请求区别

答:a、Post是通过Hilp中的Post机制将表单中的数据提交道Action所制定

的程序Get方法是通过Uri请求来提交表单数据的。

b.Get适用于传输数据量小于1K数据,执行效率高。Post传输数据量较大,但

也有限量。

6.servlet生命周期

答:Servlet的生命周期始于将它装入Web服务器的内存时,并在终止或重新

装入Servlet时结束。包括加载和实例化、初始化、处理请求以及服务结束。

这个生存期由javax.servlet.Servlet接口的init,service和destroy方

法表达。

描述servlet的生命周期,谁来控制servlet的生命周期,servlet生命周期在

J2EE规范中是如何来定义的服务器实例化一个servlet对象,容器运行其init

方法,请求到达时运行其service方法,service方法根据请求的类型调用(doGet,

doPost)方法,当服务器决定将实例销毁时调用其destory方法

7^Servlet和Jsp的区别?

答:Servlet是直接执行的文件Jsp是要被通过编译形成Servlet后才执行。

8.JSP构架模型

Modell:纯jsp维护难,代码可复用性差

Model2:jsp+javabean在jsp中使用usebean标签,代码在jsp中本质同Modell

Mvc:jsp+scrvlct+javabean

9.JSP隐含变量

request

用户端请求,此请求会包含来自GET/POST请求的参数

response网页传回用户端的回应

pageContext网页的属性是在这里管理

session与请求有关的会话期

applicationservlet正在执行的内容

configservlet的构架部件

out用来传送回应的输出(用来向客户端输出数据)

pageJSP网页本身

exception针对错误网页,未捕捉的例外(异常)

10.四大共享范围

答:a、page当前页面。

b、session同一个网站内。

c、request从上一页到下一个页面。

d、application同一个网站内。

11.MVC——如何理解MVC

答:MVC是Model—View—Controller的简写。

“Model”代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),

“View”是应用的表示面(由JSP页面产生),

“Controller”是提供应用的处理过程控制(一般是一个Servlet),通过这

种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可

以进行交互和重用。

11.JSP生命周期

普#6

JSP页雷Ye»No

servlet・评YwNo

M・serdet实例YwNo

并•入蜃务H

的内存

Mt(・奥似的YesNo

短收)用

doG«t(YesYes

的的殴)*,用

12、JSP中动态

INCLUDE与静态INCLUDE的区别?

动态INCLUDE用jsp:include动作实现,它总是会检查所含文件中的变化,适合

用于包含动态页面,并且可以带参数。

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静

态页面

13.Forword和SendRedirect区别

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后

的地址;

后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,

从浏览密的地址栏中可以看到跳转后的链接地址。

所以,前者更加高效,在前者可以满足需要时,尽量使用forward。方法,并且,

这样也有助于隐藏实际的链接。但在有些情况下,比如,需要跳转到一个其它服

务器上的资源,则必须使用sendRedirectO方法。

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响

应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送

的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那人地

址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request

参数都可以获取。

14.从BeanFactoy或ApplicationContext是通过什么模式取得实例的?如果

要取得多个实例在配制文件中要怎样做映射

答:是通过单态模式取得实例的,在配制文件中可以改,好像是isthread…设

成false

15.jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作

jsp:include:在页面被请求的时候引入一个文件。

jsp:useBean:寻找或者实例化一个JavaBean0

jsp:setProperty:设置JavaBcan的属性。

jsp:getProperty:输出某个JavaBean的属性。

jsp:forward:把请求转到一个新的页面。

jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

16.请简述Session的特点有哪些?

答案:

1.不是线程安全的

1.Session实例是轻量级的

2.(3)在Session中,每个数据库操作都是在一个事务(transaction)中进

行的

17.叙述Session的缓存的作用

答案:

(1)减少访问数据库的频率。

(2)保证缓存中的对象与数据库中的相关记录保持同步。

18、如何设置/取得Bean中的属性值?

答:设置属性值<jsp:setPropertyname二"haha”,property="haha的属性”

value/变量值”/>

<jsp:setPropertyname二"haha”,property:”*”/>获取从上一个表单中提

交过来的,与Bean中变量名字相同的所有属性.

取得属性值:<Jsp:getPropertyname="haha”property二"bean的属性”/>

相当于:<%=getA()%>

19、JavaBean的使用:<jsp:useBcanid="name"class="sist.md5"

scope="page"/>或者<jsp:useBeanid="nameclass="sist.mdS^

scope="page"X/jsp:useBean>

20、实现页面跳转的两种方法:

答:a、<jsp:forwardpage二"for2.jsp"/>

b、<%response.sendRedirect(ufor2.jspn);%>

21、include指令标签:

<%@includefile=,>incl.jspw%>简单的代码复制。

include动作标签:<jsp:includepage=”inc2.jsp"〉获取inc2.jsp的执行

结果。

22、页面之间的值传递:

答:a、设置Session变量:session.setAttribute(unamev,nsist^);

获取Session变量:session,getAttribute(“name”);

b、地址方式传递:show,jsp?id=变量值

23、内置对象的作用域分为4种:

答:a、page当前页面。

b、session同一个网站内。

c、request从上一页到下一个页面。

d、application同一个网站内。

24、获取sessionID:<%=session.getld()%>;判断session是否有效:

session.isNew();

25、使用Cookie对象

答:Cookieck:newCookie("name",”sist");

写入:response.addCookie(ck);

读取:Cookie[]ck=request.getCookiesO;

If(ck==null)

for(inta=0;a<ck.length;a++)

(

If(namew.equals(ck[a].getName()))

Out.print(ck[a].getValueO);

)

26、什么是servlet:在web容器中运行的服务器端JAVA程序,主要用于响应

HTTP请求。Servlet一般用于MVC中的控制器部分。

27、什么是servlet容器:用来管理servlet生命周期的应用程序如(tomcat)。

28、什么是JSPPage:javaserverpage是servlet的扩展,强调web页而表

达,编译后是一个类servlet。

29、JSP标签

z町作标签:jsp:includejsp:forwordjsp:usebeanjsp:set/getProperty

指令标签:<%@page...%>〈幽include…<%@taglib-..%>

30、servlet中如何

A、从HTML表单中获得参数

request.getParameterNames();enumer;

request.getParameter();String

b、如何获得请求头部的信息

Enumerationenumer=request.getHeaderNames(J;

While(enumer.HasMoreElements())

(

Stringheader=enumer.next();

Stringresult=rcquest.gctHcadcr(header);

Out.print(result);

}

C、如何获得客户cookie的信息

request.getCookiesd;array[]

d、如何设置response的头部信息

response.setHeader(;;

e、如何设置响应的contenttype

response.setContent?ype(utext/htmlcharset=utf-8");

f、如何获得I/O流、text流、二进制流

g、如何从当前的servlet重定向到其他的URL

response.sendRedirect(“url")

RequstDispatcherrd=request.getRequstDispatcher(“url”)

Rd.forword(request,response);

h如何向客户端写cookie

Cookiecookie=newCookie(objectwwjklj?,);

Cookie.setMaxAge(时间);

Response.addCookie(cookie);

31、描述servlet的生命周期,谁来控制servlet的生命周期,servlet生命周

期在J2EE规范中是如何来定义的

服务器实例化一个servlet对象,容器运行其init方法,请求到达时运行其

service方法,service方法根据请求的类型调用(doGet,doPost)方法,当服

务器决定将实例销毁时调用其destory方法。

32、如何创建RequestDispatcher对象,如何将请求转发给其它的web资源(包

含其它的web资源),描述如何利用request来存状态,以及与其它保存状态

方法有什么区别

RequstDispatcherrd=request,getRequstDispatcher(“url")

Rd.forword(request,response);

Request.setAttribute("object"内容”);

一旦产生响应request的生命周期就结束了

33、如何在web.xml中配置servlet定义

<servlet>

<servlet-name>name</servlet-name>

<servlet-class>package</servlet-class>

</servlet>

映射

<servlet-mapping>

<servlet-name>name</servlet-name>

<url-patten>/patten</url-patten>

</scrvlet-mapping>

34、获得ServletConfig对象

ServletConfigsc=getServletConfig();

35、如何获得servletContext对象

servletContextsc=getservletContext();

36、<html><body>

<ahref二”/servlet/HelloServlet”>P0ST</a>

</body></html>

调用servlet时采用了doPost、doGet、doForm、doHref中的哪个方法

doGet方法

37、说明如下的web的资源应该放在web容器中的什么目录下,静态页面JSP、

servletclass、web.xml、Taglibraries、JARFile>javaclass以及需要保

护的资源文件

tomcat容器web.xml,Taglibraries:\webapps\工程名\WEBTNF

servlet,javaclass:\webapps\T程名\WEBTNF\classes\

jar:\webappsVT程名\WEBTNF\lib\

38、描述requestsessionwebapplication的区别,创建监听器类来监听每

个scope的生命周期

生命周期不同request产生响应时生命周期结束,session在web.xml中设置生

命周期时间、手动清除web容器重启生命周期结束。Webapplication容器重启、

手动清除

39、JSP的内置对象及方法。

request表示HttpScrvlctRcquest对象。它包含了有关浏览器请求的信息,并

且提供了几个用于获取cookie,header,和session数据的有用的方法。

response表示HtlpServlelResponse对象,并提供了几个用于设置送回浏

览器的响应的方法(如cookies,头信息等)

out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用

于向浏览器回送输出结冬

pageContext表示一个javax.servlet,jsp.PageContext对象。它是用于方

便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的

servlet相关功能的方法。

session表示一个请求的javax.servlet,http.HllpSession对象°Session

可以存贮用户的状态信鸟

applicaton表示一个javax.servle.ServletContext对象。这有助于查找

有关servlet引擎和servlet环境的信息

config表示一个javax.servlet.ServletConfig对象。该对象用于存取

servlet实例的初始化参数。

page表示从该页面产生的一个servlet实例

40、JSP的常用指令

<%@pagelanguage="java”contenType="text/html;charset=gb2312Q

session=“true”buffer="64kb"autoFlush=“true”

isThreadSafe=wtrue"info="text“errorPage=werror.jspn

isErrorPage="true"isELIgncrud="true"pagpEncoding=Mgb2312"

import="java.sql.*"%>

isErrorPagc(是否能使用Exception对象),isELIgnorcd(是否忽略表达式;

<%@includefile="filenamew%>

<%@taglibprefix=”cvuri=whttp://...v%>

41、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表

表达。JSP编译后是”类sorvlot”。Servlet和JSP最主要的不同点在于,

Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。

而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于

视图,Servlet主要用于控制逻辑。

42、四种会话跟踪技术

会话作用域ServletsJSP页面描述

page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java

servlet类(可以带有任何的include指令,但是没有include动作)表示。

这既包括servlet又包括被编译成servlet的JSP页面

request是是代表与Web客户机发出的一个请求相关的对象和属性。一个请求

可能跨越多个页面,涉及多个Web组件(由于forward指令和include动作

的关系)

session是是代表与用于某个Web客户机的一个用户体验相关的对象和属性。

一个Web会话可以也经常会跨越多个客户机请求

application是是代表与整个Web应用程序相关的对象和属性。这实质上是跨

越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域

43、根据JSP的生命周期完成下面表格

*i*2*3*4

JSPW»YBNoN。NoYMNo

servletM*IYCBNojr«oNoVcNa

“"rsei笑便NoYeeNoYMNo

并■入

的内存11!1

Ht("金■NoYxNoY”No

(MMYeiYMYesVesYcVc

页面首次编写完成请求#1请求#2服务器重起请求#3请求#4页面被修改请求#5

请求#6JSP页面转换成servletServlet编译创建servlet实例并载入服务器的

内存Init(或类似的函数)被调用DoGet(或类似的函数)被调用

jdbc

1JDBC连接数据库6步

LoadtheJDBCDriver

1.EstablishtheDatabaseConnection

2.CreateaStatementObject

3.ExecuteaQuery

4.ProcesstheResults

5.ClosetheConnection

2事务的4大特性

答:原子性A.一致性C,隔离性L永久性D

3.selectcount(*)fromstudent和selectcount(id)fromstudent之

间的区别。

答案:

selectcount(*)统计所有学生的记录个数,包石空记录。

Selectcount(Id)统计所有学生的记录个数,不包括null记录。

4假设现在有表system,tablel,表中有三个字段:id(数值型)、name(字符型)、

age(数值型)写出SQL语句完成如下功能:在表中查出年龄大于20,且名字以“

王”开头的记录,并且按照年龄的倒叙排列出来(年龄大的在前面)。

答案:

Select*fromsystem,tablelwhereage>20andnamelike'王%'orderby

ageDESC;

5.创建CUSTOMERS表,字段为:ID:(非空,主键)bigint,NAME:(非空)

varchar,AGE:int类型;创建ORDERS表,字段为:ID:(非空,主键,)bigint,

ORDER_NUMBER:(非空)varchar,PRICE:double,CUSTOMER_ID:(外键)

bigint,设置级连删除;

答案:createtableCUSTOMBERS(

IDbigintnotnull,

NAMEvarchar(15),

AGEint,

prinarykey(ID)

);

createtableORDERS(

IDbigintnotnul1,

ORDER.NUMBERvarchar(15)notnulll,

PRICEdoubleprecision,

CUSTOMER」。bigint,

primarykey(TD),

);

altertableORDERSaddconstraintFK_CUSTOMERforeignkey

(CUSTOMERTD)referencesCUSTOMERS(ID)ondeletecascade;

6.使用左外连接查询,ORDERS和CUSTOMERS表,

答案:selectc.ID,o.CUSTOMER」D,c.NAME,o.IDORDER.ID,ORDER_NUMBERfrom

CUSTOMERScleftouterjoinORDERSonoc.1D=o.CUSTOMER」D;

29.简述数据库事务的生命周期?(可画流程图)

答案:

7.deletefromtablea&truncatetabletablea的区别

truncate语句执行速度快,占资源少,并且只记录页删除的日志:

delete对每条记录的删除均需要记录日志

Struts

1.简述Struts框架的初始化流程。

答案:

对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器

ActionServlet

ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到

ActionMappings对象口。

在StrutsframeworkController主要是ActionServlet,但是对于业务逻

辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完

成(也许这几个组件,应该划分到模型中的业务逻辑一块)。

其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和

ActionForward则指定了不同业务逻辑或流程的运行方向。

2.简述Struts框架响应客户请求的工作流程

答案:

1.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用

户请求路径无效的信息。

2.如果ActionForm实例不存在,就创建一个ActionForm对象,把客户

提交的表单数据保存到ActionForm对象中。

3.根据配置信息决定是否需要表单验证。如果需要验证,就调用

ActionForm的validate()方法。

4.如果ActionForm的validate()方法返回null或返回一个不包含

ActionMessge的ActionErrors对象,就表示表单验证成功。

5.ActionServlet根据AtionMapping实例包含的映射信息决定将请求转

发给哪个Action。如果应的Action实例不存在,就先创建这个实例,然后

调用Action的execute。方法。

6.Action的execute()方法返回一个ActionForward对象,

ActionServlet再犯客户请求转发给ActionForward对象指向的JSP组件。

7.ActionForward对象指向的JSP组件生成动态页面,返回给客户。

对于以上流程的步骤(4),如果ActionForm的validate。方法返回一个包含

一个或多个ActionError的ActionErrors对象,就表示表单验证失败,此时

ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。在这种情况

下,不会再创建Action对象并调用Action的execute方法。

3Struts框架的数据验证可分为几种类型?

答案:

表单验证(由ActionFormBean处理):如果用户没有在表单中输入姓名,就提

交表单,将生成表单验证错误

业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,

按照本应用的业务规则,不允许向"Monster”打招呼,因此将生成业务逻辑错

误。

4简述FormBean的表单验证流程。

答案:

1、当用户提交了HTML表单,Struts框架自动把表单数据组装到ActionFormBean

中。

2、接卜来Struts框架会调用ActionFormBean的validate。方法进行表单验

证。

3、如果validate。方法返回的ActionErrors双象为null,或者不包含任何

ActionMcssage对象,就表示没有错误,数据验证通过。

4、如果ActionErrors中包含ActionMcssagc对象,就表示发生了验证错误,

Struts框架会把ActionErrors对象保存到request范围内,然后把请求转发到

恰当的视图组件,视图组件通过<html:enrors>标签把request范围内的

ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。

5在struts配置文件中action元素包含哪些属性和子元素?

答案:

path属性:指定请求访问Action的路径

type属性:指定Action的完整类名

name属性:指定需要传递给Action的ActionFormBean

scope属性:指定ActionFormBean的存放范围

validate属性:指定是否执行表单验证

input属性:指定当表单验证失败时的转发路径。

<action>元素还包含一个〈forward)子元素,它定义了一个请求转发路径。

6.简单叙述ActionFormBean的作用

答案:

1>ActionFormBean也是一种JavaBean,除了具有一些JavaBean的常规方法,

还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默

认值。

2、Struts框架利用ActionFormBean来进行View组件和Controller组件之

间表单数据的传递。

3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm

Bean中,把它传递给Controller组件,Controller组件可以对ActionForm

Bean中的数据进行修改JSP文件使用Struts标签读取修改后的ActionForm

Bean的信息,重新设置HTML表单。

7.叙述ActionForm执行步骤

答案:

(1)检查Action的映射,确定Action中已经配置了对ActionForm的映射

(2)根据name属性,查找formbean的配置信息

(3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此

formbean的实例。

(4)假如当前范围下,已经存在了此formbean的实例,而是对当前请求来说,

是同一种类型的话,那么就重用。

(5)否则,就重新构建一个formbean的实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论