Java筆試面試寶典_第1頁
Java筆試面試寶典_第2頁
Java筆試面試寶典_第3頁
Java筆試面試寶典_第4頁
Java筆試面試寶典_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

EJB

1:EJB:

答:EnterpriseJavaBean相當于DCOM,即分布式組件。它是基于Java的遠

程方法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠程訪問(跨進程、跨計算機)。

但EJB必須被布署在諸如Wcbspcrc、WcbLogic這樣的容器中,EJB客戶從大直

接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB

組件由容器所創(chuàng)建和管理??蛻敉ㄟ^容器來訪問真正的EJB組件。

答:Enterprisejavabean容器。更具有行業(yè)領(lǐng)域特色。他提供給運行在其中

的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容器,馬上就會被

容器進行高效率的管理。并且可以通過現(xiàn)成的接口來獲得系統(tǒng)級別的服務(wù)。例如

郵件服務(wù)、事務(wù)管理。

RMI:(RemoteMethodInvocation)遠程方法調(diào)用

答:RMI(RemoteMethodInvocation,遠程方法調(diào)用)是用Java在JDK1.1

中實現(xiàn)的,它大大增強了Java開發(fā)分布式應(yīng)用的能力。Java作為一種風察一

時的網(wǎng)絡(luò)開發(fā)語言,其巨大的威力就體現(xiàn)在它強大的開發(fā)分布式網(wǎng)絡(luò)應(yīng)用的能

力上,而RMI就是開發(fā)百分之百純Java的網(wǎng)絡(luò)分布式應(yīng)用系統(tǒng)的核心解決方

案之一。其實它可以被看作是RPC的Java版本。但是傳統(tǒng)RPC并不能很好地

應(yīng)用于分布式對象系統(tǒng)。而JavaRMI則支持存儲于不同地址空間的程序級對

象之間彼此進行通信,實現(xiàn)遠程對象之間的無縫遠程調(diào)用。

2:EJB種類、作用

答:EntityBean用于描述一個永久的對象。

SessionBean——描述任務(wù)或者工作流的模型,并且協(xié)調(diào)Bean之間的交互。

Message-DriverBean——用在基于J2EE應(yīng)用程序中處理異步JMS消息。

3:實體bean,CMP,BMP寫法區(qū)別?

答:CMPentitybean不需要在bean中編寫數(shù)據(jù)庫操作的代碼;可以讓容器做

這件事。

BMPentitybean在bean類中直接編寫數(shù)據(jù)庫調(diào)用,以及對固定存儲的

任意類型的訪問,來管理bean的持久性。

4:Find與Select方法的區(qū)別?

答:

FinderSelect

單個或者多個(集合或集)對象.

是該bean類型或CMR相關(guān)類型

單對象或者集合,是該bean類型的EJBObject(s)或

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

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

域,

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

FindXxx()EjbSclectXxx一bean類

見面向entitybean類內(nèi)部,供其他

公開給客戶端

度bean方法使用

實當前實例,但若調(diào)用來自home方

Bean池任意隨機bean實例

例法則為任意隨機實例.

5:主接口方法的定義與寫法?

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

寫法為creatXxx

無狀態(tài)sessionbean必須個且僅有一個無參的創(chuàng)建方法.

有狀態(tài)sessionbean必須含有至少一個創(chuàng)建方法.Entitybean可以有0至多個

創(chuàng)建方法.

Finder方法-Finder方法對于entitybean有效,通過它可以在數(shù)據(jù)庫中查找到

entitybean對應(yīng)的持久性數(shù)據(jù).每一個entitybean的home接口必須有一個

findByPrimaryKey方法,并以實體的主鍵為參數(shù).可以定制Finder方法.Home方

法-Home方法也僅對entitybean有效.Home方法能夠返回任意類型的序列叱對

象,但并不實際生成bean的實例.

6:主接口與組件接口的區(qū)別?

答:主接口提供EJB客戶端對bean的訪問.定義了bean的生命周期方法,

并提供「bean的基本生命周期管理功能,如創(chuàng)建,刪除,查找.messagedrivern

bean不含有home接口.組件接口是由enterprisebean的客戶端用來取得bean

的訪問能力.它定義了對于客戶端可見的業(yè)務(wù)方法.組件接口中的業(yè)務(wù)方法必須

符合bean類中的實現(xiàn).

7、JMS消息傳遞的方式?

答:點到點(point-to-point)消息通過隊列進行發(fā)送.發(fā)布與訂閱

(publish-and-subscribe,pub/sub)消息通過標題傳遞.

8、EJB客戶端訪問后臺EJB的代碼?

答:pl92,pl93

9、有狀態(tài)sessionbean與無狀態(tài)sessionbean的區(qū)別?

答:statefulsessionbean維護客戶端會話狀態(tài).它們必須屬于一個且只屬于

一個客戶端.激活/鈍化,開銷大.statelesssession不維護一個客戶端的會話狀

態(tài)它們被放入實例池中,因此可被多個用戶共用,開銷小,效率高。

10、本地視圖與遠程視圖的區(qū)別?

答:遠程視圖-它的想法就是遠程調(diào)用將在兩臺不同JVM之間執(zhí)行.遠程

調(diào)用這些操作使得相關(guān)網(wǎng)絡(luò)開銷會更高與對象的位置無關(guān).也不會在乎是否在一

個JVM.

本地視圖-它的想法就是本地調(diào)用將在相同的JVM中執(zhí)行.沒有網(wǎng)絡(luò)開銷.操作效

率更高,因為客戶端使用本地對象調(diào)用bean上的服務(wù),限制在本地實現(xiàn)中,而且

不需要做到與位置無關(guān).

11:CMT事物屬性

Transaction

aienttTransactionAuodModwithEJB

Method

Mandatory*Exception

AA

Never?

AException

Required?B

AA

ReciulresHev-A

AB

Support*??

AA

Notdupported??

A?

Mandatoc,-當使用這個值時,bean方法被調(diào)用時必須有一個事務(wù)已經(jīng)處在運行

中.

Never-如果在現(xiàn)有事務(wù)中調(diào)用此bean,容器將拋呂Java.rmi.RemolException.

Required-bean方法必須總是在事務(wù)上下文中執(zhí)行.

RequiresNew-當方法被調(diào)用的時候,bean總會需要啟動一個新的事務(wù)

Supports可以參與到正在運行的事務(wù)中,但這個事務(wù)并不是必須的.

NotSupported-該值意味著在事務(wù)中bean或者方法根本不能被調(diào)用.

12:事務(wù)屬性ACID

答:原子性一一一個事務(wù)要么完全執(zhí)行,要么根本不執(zhí)行。

一致性一一一個事務(wù)在它完成后不能留下系統(tǒng)的不一致性。

隔離性一一所有的事務(wù)不許允許在執(zhí)行的時候不受其他進程或者事務(wù)的干涉。

持久性一一在事務(wù)期間,所有提交的變更數(shù)據(jù)必須寫入持久的數(shù)據(jù)存儲器,

并且應(yīng)該能在硬件和軟件失效中保存下來。

13:實體Bean的三個狀態(tài):

答:no-stateBean實例還沒有創(chuàng)建。

pooled——Bean實例被創(chuàng)建,但還沒有和一個叮BObject關(guān)聯(lián)。

ready與EJBObject相關(guān)聯(lián)。若斷開關(guān)聯(lián)則回到pooled。

14:JMS、JMS消息模型

答:JavaMessageService(JMS)是一個JAVAAPI,用來訪問面向消息中間件(MOM)

服務(wù)。JMS為Java程序生成、發(fā)送、接收和讀取異步消息提供通用的方法。

JMS模型:點到點和發(fā)布與訂閱

point-to-point——消息通過隊列進行發(fā)送。消息由消息生產(chǎn)者(客

戶端)放入隊列中。消息消費者有責任從隊列中取出消息。當給定的

消息只能被給定的消費者接收時,使用P2P。這種情況下,該給定信

息只有一個消費者。

Publpub/sub)消息通過標題傳遞。由

生產(chǎn)者將消息發(fā)布為標題。消息可以被任何訂閱該標題的消費者收到。

通過這種方法,一個消息可以被多個消費者接收或處理。

15:EJB客戶端類型

答:①Sessionbean②servlet③java應(yīng)用④JavaApplet⑤非Java客戶端

16:ORM

答:ORM對象-關(guān)系映射(Object-RelationMapping)模式是指在單個組件中負責

所有實體域?qū)ο蟮某志没?,封裝數(shù)據(jù)訪問細節(jié)

17:EJB是基于哪些技術(shù)實現(xiàn)的?

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

RMI>JAT等技術(shù)實現(xiàn)。

18:說出SessionBean和EntityBean的區(qū)別

SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪

問數(shù)據(jù)庫、調(diào)用其他EJB組件。EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù)。

對于客戶機,SessionBean是一種非持久性對象,它實現(xiàn)某些在服務(wù)器上運行的

業(yè)務(wù)邏輯。

對于客戶機,EntityBean是一種持久性對象,它代表一個存儲在持久性存儲器

中的實體的對象視圖,或是一個由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實體。

19:StatefulBean和StatelessBean的區(qū)別。

SessionBean還可以再細分為StatefulSessionBean與StatelessSession

Bean,這兩種的SessionBean都可以將系統(tǒng)邏輯放在method之中執(zhí)行,不同

的是StatefulSessionBean可以記錄呼叫者的狀態(tài),因此通常來說,一個使

用者會有一個相對應(yīng)的StatefulSessionBean的實體。StatelessSession

Bean雖然也是邏輯組件,但是他卻不負責記錄使用者狀態(tài),也就是說當使用者

呼叫StatelessSessionBean的時候,EJBContainer并不會找尋特定的

StatelessSessionBean的實體來執(zhí)行這個methodo換言之,很可能數(shù)個使用

者在執(zhí)行某個StatelessSessionBean的methods時,會是同一個Bean的

Instance在執(zhí)行。從內(nèi)存方面來看,StatefulSessionBean與Stateless

SessionBean比較,StatefulSessionBean會消耗J2EEServer較多的內(nèi)

存,然而StatefulSessionBean的優(yōu)勢卻在于他可以維持使用者的狀態(tài)。

20:EJB與JAVABEAN的區(qū)別?

JavaBean是可復(fù)用的組件,對JavaBean并沒有嚴格的規(guī)范,理論上講,任何

一個Java類都可以是一個Beano但通常情況下,由于JavaBean是被容器所創(chuàng)

建(如Tomcat)的,所以JavaBean應(yīng)具有一個無參的構(gòu)造器,另外,通常Java

Bean還要實現(xiàn)Serializable接口用于實現(xiàn)Bean的持久性。JavaBean實際上相

當于微軟COM模型中的本地進程內(nèi)COM組件,它是不能被跨進程訪問的。

EnterpriseJavaBean相當于DCOM,即分布式組件。它是基于Java的遠程方

法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB

必須被布署在諸如Webspere、呢bLogic這樣的容器中,EJB客戶從不直接訪問

真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件

由容器所創(chuàng)建和管理??蛻敉ㄟ^容器來訪問真正的EJB組件。

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

務(wù)的?

ScssionBean:StatelessSessionBean的生命周期是由容器決定的,當客戶機

發(fā)出請求要建立一個Bean的實例時,EJB容器不一定要創(chuàng)建一個新的Bean的實

例供客戶機調(diào)用,而是隨便找一個現(xiàn)有的實例提供給客戶機。當客戶機第一次調(diào)

用一個StatefulSessionBean時,容器必須立即在服務(wù)器中創(chuàng)建一個新的Bean

實例,并關(guān)聯(lián)到客戶機上,以后此客戶機調(diào)用StatefulSessionBean的方法

時容器會把調(diào)用分派到與此客戶機相關(guān)聯(lián)的Bean實例。

EntityBean:EntityBeans能存活相對較長的時間,并且狀態(tài)是持續(xù)的。只要

數(shù)據(jù)庫中的數(shù)據(jù)存在,Entitybeans就一直存活。而不是按照應(yīng)用程序或者服

務(wù)進程來說的。即使EJB容器崩潰了,Entitybeans也是存活的。EntityBeans

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

E.JB通過以下技術(shù)管理實務(wù):對象管理組織(0MG)的對象實務(wù)服務(wù)(OTS),Sun

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

開發(fā)組(X/Open)的XA接口。

22.EJB有哪些角色和對象

一個完整的基于EJB的分布式計算結(jié)構(gòu)由六個角色組成,這六個角色可以由不同

的開發(fā)商提供,每個角色所作的工作必須遵循Sun公司提供的EJB規(guī)范,以保證

彼此之間的兼容性。這六個角色分別是EJB組件開發(fā)者(EnterpriseBean

Provider)、應(yīng)用組合者(ApplicationAssembler)、部署者(Deployer)、

EJB服務(wù)器提供者(EJBServerProvider)、EJB容器提供者(EJBContainer

Provider)、系統(tǒng)管理員(SystemAdministrator)

三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean類

23.EJB容器提供的服務(wù)有哪些?

主要提供聲明周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務(wù)管理、鎖和并發(fā)行

管理等服務(wù)。

24.EJB的幾種類型

會話(Session)Bean,實體(Entity)Bean消息驅(qū)動的(MessageDriven)

Bean

會話Bean又可分為有狀態(tài)(Stateful)和無狀態(tài)(Stateless)兩種

實體Bean可分為Bean管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)兩種

25.EJB需直接實現(xiàn)它的業(yè)務(wù)接口或Home接口嗎,請簡述理由。

遠程接口和Home接口不需要直接實現(xiàn),他們的實現(xiàn)代碼是由服務(wù)器產(chǎn)生的,程

序運行中對應(yīng)實現(xiàn)類會作為對應(yīng)接口類型的實例被使用。

26.在J2EE內(nèi),WAR和EAR文件分別代表什么。

WAR:Web歸檔;包含一個web工程所有組件的壓縮文件。

EAR:企業(yè)歸檔;包含一個企業(yè)應(yīng)用所有組件的壓縮文件。

Hibernate

1.Hibernate的檢索方式

答:①導(dǎo)航對象圖檢索②OID檢索③HQL檢索④QBC檢索⑤本地SQL檢索

2.Forward與Global-Forward的區(qū)別

答:Forward是根據(jù)Actionreturn的值找到對應(yīng)的JSP頁。當多個Action共

同return同一個值時,可將這個Forward元素寫在Global-Forward中。

3.持久化對象的三種狀態(tài),代表含義。

答:臨時狀態(tài)一一剛用new語句創(chuàng)建,未被持久化,不處于session的緩存中。

持久化狀態(tài)一一已經(jīng)被持久化,處于session的緩存中。

游離態(tài)一一已經(jīng)被持久化,但不處于session的緩存中。

4、三種檢索策略是什么,分別適用于哪種場合?

答:立即檢索一一

優(yōu)點:對應(yīng)用程序完全透明,缺點:select語句數(shù)目多。適用:類級別。

延遲檢索一一

優(yōu)點:由應(yīng)用程序決定加載哪些對象,可以避免執(zhí)行多余的select語句以及避

免加載不需要訪問的對象,節(jié)省內(nèi)存空間,提高檢索效率。

缺點:應(yīng)用程序如果要訪問游離態(tài)的代理類實例,必須保證它在持久化時已經(jīng)

被初始化。

適用:一對多或多對多關(guān)聯(lián)。應(yīng)用程序不需要立即訪問或者根本不會訪問的對

象。

迫切左外連接檢索:

優(yōu)點:對應(yīng)用程序完全透明,不管對象處于持久化狀態(tài)還是游離狀態(tài),應(yīng)用程序

都可以方便的從一個對象導(dǎo)航到另一個與它相關(guān)聯(lián)的對象。使用了外連接,

select語句數(shù)目少。

缺點:可能會加載程序不許要訪問的對象。復(fù)雜的數(shù)據(jù)庫表連接形象檢索性能。

適用:一對一或多對一關(guān)聯(lián)。應(yīng)用程序需要立即訪問的對象。數(shù)據(jù)庫系統(tǒng)具有良

好的表連接性能。

4、ORM解決的不匹配問題(域模型與關(guān)系模型之間存在的不匹配)

答:域模型是面向?qū)ο蟮?,關(guān)系模型是面向關(guān)系的。

域模型中有繼承關(guān)系,關(guān)系模型中不能直接表示繼承關(guān)系。

域模型中有多對多關(guān)聯(lián)關(guān)系,關(guān)系模型中通過連接表來表示多對多關(guān)聯(lián)關(guān)系。

域模型中有雙向關(guān)聯(lián)關(guān)系,關(guān)系模型中只有單向參照關(guān)系,而且總是many參照

one方。

域模型提倡精粒度模型,關(guān)系模型提倡粗粒度模型。

5、映射繼承關(guān)系的三種方式?P424

答:(1)繼承關(guān)系樹的每個具體類對應(yīng)一張表:在具體類對應(yīng)的表中,不僅包

含和具體類屬性對應(yīng)的字段,還包括與具體類的父類屬性對應(yīng)的字段。

(2)繼承關(guān)系樹的根類對應(yīng)?張表:在根類對應(yīng)的表中,不僅包括根類屬性對

應(yīng)的字段,

還包括根類的所有子類屬性對應(yīng)的字段。

(3)繼承關(guān)系樹中的每個類對應(yīng)一張表,每個表中只包括和這個類本身屬性對

應(yīng)的字段,子類的表參照父類對應(yīng)的表。

6、Session的find。方法以及Query接口的區(qū)別。

答案Session類的find。方法以及Query接口都支持HQL檢索方式。這兩者的

區(qū)別在于,前者只是執(zhí)行一些簡單HQL查詢語句的便捷方法,它不具有動態(tài)綁定

參數(shù)的功能,而且在Hibcrnatc3.x版本中,已經(jīng)淘汰了find。方法;而Query

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

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

hibernate.show_sql=true/flase

在開發(fā)階和測試段應(yīng)設(shè)置為()在發(fā)布階段應(yīng)設(shè)置為():true\false

8.映射一對多雙向關(guān)聯(lián)關(guān)系中設(shè)置SET元素:

請寫出級聯(lián)保存和更新、級聯(lián)刪除應(yīng)在set元素中需要設(shè)置那些子元素?(標明

關(guān)系、避面重復(fù)執(zhí)行多余SQL語句)

Namecascadekeycolumnone-to-manyinverse

9.list要的實現(xiàn)類有那些?并按照存儲結(jié)構(gòu)、機制簡單的說一下。

LinkedList、ArryList>Vector?

LinkedList采用鏈表數(shù)據(jù)結(jié)構(gòu)、AbyList代表大小可變的數(shù)組。

Vector與ArryList功能比較相似,區(qū)別在于Vector采用同步、ArryList沒有

采用。

10:以下哪個不是Hibernate的檢索方式:

A、導(dǎo)航對象圖檢索B、0ID檢索C、ORM檢索

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

答案:C

11.持久化類的類名是Customer.java,寫出相應(yīng)的映射文件名

O

答案;Customer,hbm.xml

12.繼承的三種方式

(1)繼承關(guān)系樹的每個具體類對應(yīng)一張表:在具體類對應(yīng)的表中,不僅包含和

具體類屬性對應(yīng)的字段,還包括與具體類的父類屬性對應(yīng)的字段。

(2)繼承關(guān)系樹的根類對應(yīng)一張表:在根類對應(yīng)的表中,不僅包括根類屬性對

應(yīng)的字段,還包括根類的所有子類屬性對應(yīng)的字段。

(3)繼承關(guān)系樹中的每個類對應(yīng)一張表,每個表中只包括和這個類本身屬性對

應(yīng)的字段,子類的表參照父類對應(yīng)的表。

13.Session接口是Hibernate應(yīng)用使用最廣泛的接口。Session也被稱為持久

化管理器,它提供了和持久化相關(guān)的操作,如添加、更新、刪除、加載和查詢

對象。

14.請簡述Session的特點有哪些?

答案:

(1)不是線程安全的,因此在設(shè)計軟件架構(gòu)時,應(yīng)該避免多個線程共享同一個

Session實例。

(2)Session實例是輕量級的,所謂輕量級是指它的創(chuàng)建和銷毀不需要消耗太多

的資源。這意味著在程序中可以經(jīng)常創(chuàng)建或銷毀Session對象,例如為每個客戶

請求分配單獨的Session實例,或者為每個工作單元分配單獨的Session實例。

(3)在Session中,每個數(shù)據(jù)庫操作都是在一個事務(wù)(transaction)中進行的,

這樣就可以隔離開不同的操作(甚至包括只讀操作)。

12、Hibernate中采用XML文件來配置對象-關(guān)系映射的優(yōu)點有那些?

答案:Hibernate既不會滲透到上層域模型中,也不會滲透到下層數(shù)據(jù)模型中。

軟件開發(fā)人員可以獨立設(shè)計域模型,不必強迫遵守任何規(guī)范。數(shù)據(jù)庫設(shè)計人員可

以獨立設(shè)計數(shù)據(jù)模型,不必強迫遵守任何規(guī)范。對象-關(guān)系映射不依賴于任何程

序代碼,如果需要修改對象-關(guān)系映射,只需修改XML文件,不需要修改任何程

序,提高了軟件的靈活性,并且使維護更加方便。

13、在Hibernate應(yīng)用中Java對象的狀態(tài)有哪些?

答案:

1臨時狀態(tài)(transient):剛剛用new語句創(chuàng)建,還沒有被持久化,不處于Session

的緩存中。處于臨時狀態(tài)的Java對象被稱為臨時對象。

2持久化狀態(tài)(persistent):已經(jīng)被持久化,加入到Session的緩存中。處于

持久化狀態(tài)的Java對象被稱為持久化對象。

3游離狀態(tài)(detached):已經(jīng)被持久化,但不再處于Session的緩存中。處于

游離狀態(tài)的Java對象被稱為游離對象。

14、敘述Session的緩存的作用

答案:

(1)減少訪問數(shù)據(jù)庫的頻率。應(yīng)用程序從內(nèi)存中讀取持久化對象的速度顯然比

到數(shù)據(jù)庫中查詢數(shù)據(jù)的速度快多了,因此Sessior.的緩存可以提高數(shù)據(jù)訪問的性

能。

(2)保證緩存中的對象與數(shù)據(jù)庫中的相關(guān)記錄保持同步。當緩存中持久化對象

的狀態(tài)發(fā)生了變換,Session并不會立即執(zhí)行相關(guān)的SQL語句,這使得Session

能夠把幾條相關(guān)的SQL語句合并為一條SQL語句.以便減少訪問數(shù)據(jù)庫的次數(shù),

從而提高應(yīng)用程序的性能。

15、比較Hibernate的三種檢索策略優(yōu)缺點;

答案:

1立即檢索;

優(yōu)點:對應(yīng)用程序完全透明,不管對象處于持久化狀態(tài),還是游離狀態(tài),應(yīng)

用程序都可以方便的從一個對象導(dǎo)航到與它關(guān)聯(lián)的對象;

缺點:1.select語句太多;2.可能會加載應(yīng)用程序不需要訪問的對象白白浪

費許多內(nèi)存空間;

2延遲檢索:

優(yōu)點:

由應(yīng)用程序決定需要加載哪些對象,可以避免可執(zhí)行多余的select語句,

以及避免加載應(yīng)用程序不需要訪問的對象。因此能提高檢索性能,并且能節(jié)

省內(nèi)存空間;

缺點:

應(yīng)用程序如果希望訪問游離狀態(tài)代理類實例,必須保證他在持久化狀態(tài)時已

經(jīng)被初始化;

3迫切左外連接檢索

優(yōu)點:

1對應(yīng)用程序完全透明,不管對象處于持久化狀態(tài),還是游離狀態(tài),應(yīng)用程

序都可以方便地沖一個對象導(dǎo)航到與它關(guān)聯(lián)的對象。

2使用了外連接,select語句數(shù)目少;

缺點:

1可能會加載應(yīng)用程序不需要訪問的對象,白白浪費許多內(nèi)存空間:2復(fù)雜

的數(shù)據(jù)庫表連接也會影響檢索性能;

16、多個事務(wù)并發(fā)運行時的并發(fā)問題有哪些?

答案第一類丟失更新;臟讀;虛讀;不可重復(fù)讀;第二類丟失更新;

17、ORM解決的不匹配問題(域模型與關(guān)系模型之間存在的不匹配)

答:域模型是面向?qū)ο蟮?,關(guān)系模型是面向關(guān)系的。域模型中有繼承關(guān)系,關(guān)

系模型中不能直接表示繼承關(guān)系。域模型中有多對多關(guān)聯(lián)關(guān)系,關(guān)系模型中通過

連接表來表示多對多關(guān)聯(lián)關(guān)系。域模型中有雙向關(guān)聯(lián)關(guān)系,關(guān)系模型中只有單向

參照關(guān)系,而且總是many參照。ne方。域模型提倡精粒度模型,關(guān)系模型提倡

粗粒度模型。

18、session的清理和清空有什么區(qū)別?

session清理緩存是指按照緩存中對象的狀態(tài)的變化來同步更新數(shù)據(jù)庫;清空是

session關(guān)閉;

19.請簡述Session的特點有哪些?

答案:

(1)不是線程安全的,因此在設(shè)計軟件架構(gòu)時,應(yīng)該避免多個線程共享同一個

Session實例。

(2)Session實例是輕量級的,所謂輕量級是指它的創(chuàng)建和銷毀不需要消耗太多

的資源。這意味著在程序中可以經(jīng)常創(chuàng)建或銷毀Session對象,例如為每個客戶

請求分配單獨的Session實例,或者為每個工作單元分配單獨的Session實例。

(3)在Session中,每個數(shù)據(jù)庫操作都是在一個事務(wù)(transaction)中進行的,

這樣就可以隔離開不同的操作(甚至包括只讀操作)。

20.如下圖A、B、C請?zhí)砩献侄?,通過表C建立表A、表B的雙向關(guān)系(要

求簡單連線)

表B

表A

表c

Jsp&servlet

1三個Statment區(qū)別,用法

Statment,基本的;PreparedStatement是可編譯的,提高效率,

callablcstatmcnt,存儲過程

2Cookie

答:臨時cookie存在于內(nèi)存中,(公話),長時cookie存在于硬盤上長時coolkie

和臨時cookie路徑問題

3servlet調(diào)試方式幾種方法

答:使用打印語句,使用TOMCAT日志,返回錯誤頁面,使用IDE集成,重起服

務(wù)器,直接查看HTML源代碼,分別處理請求和響應(yīng)數(shù)據(jù)。

4.Cookie與session的區(qū)別是:session為短對話,Cookie可以設(shè)置任意時間

的有效期。

5.Get請求和Post請求區(qū)別

答:a、Post是通過Hilp中的Post機制將表單中的數(shù)據(jù)提交道Action所制定

的程序Get方法是通過Uri請求來提交表單數(shù)據(jù)的。

b.Get適用于傳輸數(shù)據(jù)量小于1K數(shù)據(jù),執(zhí)行效率高。Post傳輸數(shù)據(jù)量較大,但

也有限量。

6.servlet生命周期

答:Servlet的生命周期始于將它裝入Web服務(wù)器的內(nèi)存時,并在終止或重新

裝入Servlet時結(jié)束。包括加載和實例化、初始化、處理請求以及服務(wù)結(jié)束。

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

法表達。

描述servlet的生命周期,誰來控制servlet的生命周期,servlet生命周期在

J2EE規(guī)范中是如何來定義的服務(wù)器實例化一個servlet對象,容器運行其init

方法,請求到達時運行其service方法,service方法根據(jù)請求的類型調(diào)用(doGet,

doPost)方法,當服務(wù)器決定將實例銷毀時調(diào)用其destory方法

7^Servlet和Jsp的區(qū)別?

答:Servlet是直接執(zhí)行的文件Jsp是要被通過編譯形成Servlet后才執(zhí)行。

8.JSP構(gòu)架模型

Modell:純jsp維護難,代碼可復(fù)用性差

Model2:jsp+javabean在jsp中使用usebean標簽,代碼在jsp中本質(zhì)同Modell

Mvc:jsp+scrvlct+javabean

9.JSP隱含變量

request

用戶端請求,此請求會包含來自GET/POST請求的參數(shù)

response網(wǎng)頁傳回用戶端的回應(yīng)

pageContext網(wǎng)頁的屬性是在這里管理

session與請求有關(guān)的會話期

applicationservlet正在執(zhí)行的內(nèi)容

configservlet的構(gòu)架部件

out用來傳送回應(yīng)的輸出(用來向客戶端輸出數(shù)據(jù))

pageJSP網(wǎng)頁本身

exception針對錯誤網(wǎng)頁,未捕捉的例外(異常)

10.四大共享范圍

答:a、page當前頁面。

b、session同一個網(wǎng)站內(nèi)。

c、request從上一頁到下一個頁面。

d、application同一個網(wǎng)站內(nèi)。

11.MVC——如何理解MVC

答:MVC是Model—View—Controller的簡寫。

“Model”代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean,EJB組件實現(xiàn)),

“View”是應(yīng)用的表示面(由JSP頁面產(chǎn)生),

“Controller”是提供應(yīng)用的處理過程控制(一般是一個Servlet),通過這

種設(shè)計模型把應(yīng)用邏輯,處理過程和顯示邏輯分成不同的組件實現(xiàn)。這些組件可

以進行交互和重用。

11.JSP生命周期

普#6

JSP頁雷Ye?No

servlet?評YwNo

M?serdet實例YwNo

并?入蜃務(wù)H

的內(nèi)存

Mt(?奧似的YesNo

短收)用

doG?t(YesYes

的的毆)*,用

12、JSP中動態(tài)

INCLUDE與靜態(tài)INCLUDE的區(qū)別?

動態(tài)INCLUDE用jsp:include動作實現(xiàn),它總是會檢查所含文件中的變化,適合

用于包含動態(tài)頁面,并且可以帶參數(shù)。

靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜

態(tài)頁面

13.Forword和SendRedirect區(qū)別

答:前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后

的地址;

后者則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,

從瀏覽密的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。

所以,前者更加高效,在前者可以滿足需要時,盡量使用forward。方法,并且,

這樣也有助于隱藏實際的鏈接。但在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服

務(wù)器上的資源,則必須使用sendRedirectO方法。

forward是服務(wù)器請求資源,服務(wù)器直接訪問目標地址的URL,把那個URL的響

應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送

的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。

redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那人地

址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新請求,所以session,request

參數(shù)都可以獲取。

14.從BeanFactoy或ApplicationContext是通過什么模式取得實例的?如果

要取得多個實例在配制文件中要怎樣做映射

答:是通過單態(tài)模式取得實例的,在配制文件中可以改,好像是isthread…設(shè)

成false

15.jsp有哪些動作?作用分別是什么?

答:JSP共有以下6種基本動作

jsp:include:在頁面被請求的時候引入一個文件。

jsp:useBean:尋找或者實例化一個JavaBean0

jsp:setProperty:設(shè)置JavaBcan的屬性。

jsp:getProperty:輸出某個JavaBean的屬性。

jsp:forward:把請求轉(zhuǎn)到一個新的頁面。

jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標記

16.請簡述Session的特點有哪些?

答案:

1.不是線程安全的

1.Session實例是輕量級的

2.(3)在Session中,每個數(shù)據(jù)庫操作都是在一個事務(wù)(transaction)中進

行的

17.敘述Session的緩存的作用

答案:

(1)減少訪問數(shù)據(jù)庫的頻率。

(2)保證緩存中的對象與數(shù)據(jù)庫中的相關(guān)記錄保持同步。

18、如何設(shè)置/取得Bean中的屬性值?

答:設(shè)置屬性值<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、實現(xiàn)頁面跳轉(zhuǎn)的兩種方法:

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

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

21、include指令標簽:

<%@includefile=,>incl.jspw%>簡單的代碼復(fù)制。

include動作標簽:<jsp:includepage=”inc2.jsp"〉獲取inc2.jsp的執(zhí)行

結(jié)果。

22、頁面之間的值傳遞:

答:a、設(shè)置Session變量:session.setAttribute(unamev,nsist^);

獲取Session變量:session,getAttribute(“name”);

b、地址方式傳遞:show,jsp?id=變量值

23、內(nèi)置對象的作用域分為4種:

答:a、page當前頁面。

b、session同一個網(wǎng)站內(nèi)。

c、request從上一頁到下一個頁面。

d、application同一個網(wǎng)站內(nèi)。

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

session.isNew();

25、使用Cookie對象

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

寫入:response.addCookie(ck);

讀?。篊ookie[]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容器中運行的服務(wù)器端JAVA程序,主要用于響應(yīng)

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

27、什么是servlet容器:用來管理servlet生命周期的應(yīng)用程序如(tomcat)。

28、什么是JSPPage:javaserverpage是servlet的擴展,強調(diào)web頁而表

達,編譯后是一個類servlet。

29、JSP標簽

z町作標簽:jsp:includejsp:forwordjsp:usebeanjsp:set/getProperty

指令標簽:<%@page...%>〈幽include…<%@taglib-..%>

30、servlet中如何

A、從HTML表單中獲得參數(shù)

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、如何設(shè)置response的頭部信息

response.setHeader(;;

e、如何設(shè)置響應(yīng)的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規(guī)范中是如何來定義的

服務(wù)器實例化一個servlet對象,容器運行其init方法,請求到達時運行其

service方法,service方法根據(jù)請求的類型調(diào)用(doGet,doPost)方法,當服

務(wù)器決定將實例銷毀時調(diào)用其destory方法。

32、如何創(chuàng)建RequestDispatcher對象,如何將請求轉(zhuǎn)發(fā)給其它的web資源(包

含其它的web資源),描述如何利用request來存狀態(tài),以及與其它保存狀態(tài)

方法有什么區(qū)別

RequstDispatcherrd=request,getRequstDispatcher(“url")

Rd.forword(request,response);

Request.setAttribute("object"內(nèi)容”);

一旦產(chǎn)生響應(yīng)request的生命周期就結(jié)束了

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>

調(diào)用servlet時采用了doPost、doGet、doForm、doHref中的哪個方法

doGet方法

37、說明如下的web的資源應(yīng)該放在web容器中的什么目錄下,靜態(tài)頁面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的區(qū)別,創(chuàng)建監(jiān)聽器類來監(jiān)聽每

個scope的生命周期

生命周期不同request產(chǎn)生響應(yīng)時生命周期結(jié)束,session在web.xml中設(shè)置生

命周期時間、手動清除web容器重啟生命周期結(jié)束。Webapplication容器重啟、

手動清除

39、JSP的內(nèi)置對象及方法。

request表示HttpScrvlctRcquest對象。它包含了有關(guān)瀏覽器請求的信息,并

且提供了幾個用于獲取cookie,header,和session數(shù)據(jù)的有用的方法。

response表示HtlpServlelResponse對象,并提供了幾個用于設(shè)置送回瀏

覽器的響應(yīng)的方法(如cookies,頭信息等)

out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用

于向瀏覽器回送輸出結(jié)冬

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

便存取各種范圍的名字空間、servlet相關(guān)的對象的API,并且包裝了通用的

servlet相關(guān)功能的方法。

session表示一個請求的javax.servlet,http.HllpSession對象°Session

可以存貯用戶的狀態(tài)信鳥

applicaton表示一個javax.servle.ServletContext對象。這有助于查找

有關(guān)servlet引擎和servlet環(huán)境的信息

config表示一個javax.servlet.ServletConfig對象。該對象用于存取

servlet實例的初始化參數(shù)。

page表示從該頁面產(chǎn)生的一個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有哪些相同點和不同點,他們之間的聯(lián)系是什么?

JSP是Servlet技術(shù)的擴展,本質(zhì)上是Servlet的簡易方式,更強調(diào)應(yīng)用的外表

表達。JSP編譯后是”類sorvlot”。Servlet和JSP最主要的不同點在于,

Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。

而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側(cè)重于

視圖,Servlet主要用于控制邏輯。

42、四種會話跟蹤技術(shù)

會話作用域ServletsJSP頁面描述

page否是代表與一個頁面相關(guān)的對象和屬性。一個頁面由一個編譯好的Java

servlet類(可以帶有任何的include指令,但是沒有include動作)表示。

這既包括servlet又包括被編譯成servlet的JSP頁面

request是是代表與Web客戶機發(fā)出的一個請求相關(guān)的對象和屬性。一個請求

可能跨越多個頁面,涉及多個Web組件(由于forward指令和include動作

的關(guān)系)

session是是代表與用于某個Web客戶機的一個用戶體驗相關(guān)的對象和屬性。

一個Web會話可以也經(jīng)常會跨越多個客戶機請求

application是是代表與整個Web應(yīng)用程序相關(guān)的對象和屬性。這實質(zhì)上是跨

越整個Web應(yīng)用程序,包括多個頁面、請求和會話的一個全局作用域

43、根據(jù)JSP的生命周期完成下面表格

*i*2*3*4

JSPW?YBNoN。NoYMNo

servletM*IYCBNojr?oNoVcNa

“"rsei笑便NoYeeNoYMNo

并■入

的內(nèi)存11!1

Ht("金■NoYxNoY”No

(MMYeiYMYesVesYcVc

頁面首次編寫完成請求#1請求#2服務(wù)器重起請求#3請求#4頁面被修改請求#5

請求#6JSP頁面轉(zhuǎn)換成servletServlet編譯創(chuàng)建servlet實例并載入服務(wù)器的

內(nèi)存Init(或類似的函數(shù))被調(diào)用DoGet(或類似的函數(shù))被調(diào)用

jdbc

1JDBC連接數(shù)據(jù)庫6步

LoadtheJDBCDriver

1.EstablishtheDatabaseConnection

2.CreateaStatementObject

3.ExecuteaQuery

4.ProcesstheResults

5.ClosetheConnection

2事務(wù)的4大特性

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

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

間的區(qū)別。

答案:

selectcount(*)統(tǒng)計所有學生的記錄個數(shù),包石空記錄。

Selectcount(Id)統(tǒng)計所有學生的記錄個數(shù),不包括null記錄。

4假設(shè)現(xiàn)在有表system,tablel,表中有三個字段:id(數(shù)值型)、name(字符型)、

age(數(shù)值型)寫出SQL語句完成如下功能:在表中查出年齡大于20,且名字以“

王”開頭的記錄,并且按照年齡的倒敘排列出來(年齡大的在前面)。

答案:

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

ageDESC;

5.創(chuàng)建CUSTOMERS表,字段為:ID:(非空,主鍵)bigint,NAME:(非空)

varchar,AGE:int類型;創(chuàng)建ORDERS表,字段為:ID:(非空,主鍵,)bigint,

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

bigint,設(shè)置級連刪除;

答案: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.簡述數(shù)據(jù)庫事務(wù)的生命周期?(可畫流程圖)

答案:

7.deletefromtablea&truncatetabletablea的區(qū)別

truncate語句執(zhí)行速度快,占資源少,并且只記錄頁刪除的日志:

delete對每條記錄的刪除均需要記錄日志

Struts

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

答案:

對于采用Struts框架的Web應(yīng)用,在Web應(yīng)用啟動時就會加載并初始化控制器

ActionServlet

ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到

ActionMappings對象口。

在StrutsframeworkController主要是ActionServlet,但是對于業(yè)務(wù)邏

輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協(xié)調(diào)完

成(也許這幾個組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。

其中,Action扮演了真正的控制邏輯的實現(xiàn)者,而ActionMapping和

ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運行方向。

2.簡述Struts框架響應(yīng)客戶請求的工作流程

答案:

1.檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回用

戶請求路徑無效的信息。

2.如果ActionForm實例不存在,就創(chuàng)建一個ActionForm對象,把客戶

提交的表單數(shù)據(jù)保存到ActionForm對象中。

3.根據(jù)配置信息決定是否需要表單驗證。如果需要驗證,就調(diào)用

ActionForm的validate()方法。

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

ActionMessge的ActionErrors對象,就表示表單驗證成功。

5.ActionServlet根據(jù)AtionMapping實例包含的映射信息決定將請求轉(zhuǎn)

發(fā)給哪個Action。如果應(yīng)的Action實例不存在,就先創(chuàng)建這個實例,然后

調(diào)用Action的execute。方法。

6.Action的execute()方法返回一個ActionForward對象,

ActionServlet再犯客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組件。

7.ActionForward對象指向的JSP組件生成動態(tài)頁面,返回給客戶。

對于以上流程的步驟(4),如果ActionForm的validate。方法返回一個包含

一個或多個ActionError的ActionErrors對象,就表示表單驗證失敗,此時

ActionServlet將直接把請求轉(zhuǎn)發(fā)給包含客戶提交表單的JSP組件。在這種情況

下,不會再創(chuàng)建Action對象并調(diào)用Action的execute方法。

3Struts框架的數(shù)據(jù)驗證可分為幾種類型?

答案:

表單驗證(由ActionFormBean處理):如果用戶沒有在表單中輸入姓名,就提

交表單,將生成表單驗證錯誤

業(yè)務(wù)邏輯驗證(由Action處理):如果用戶在表單中輸入的姓名為“Monster”,

按照本應(yīng)用的業(yè)務(wù)規(guī)則,不允許向"Monster”打招呼,因此將生成業(yè)務(wù)邏輯錯

誤。

4簡述FormBean的表單驗證流程。

答案:

1、當用戶提交了HTML表單,Struts框架自動把表單數(shù)據(jù)組裝到ActionFormBean

中。

2、接卜來Struts框架會調(diào)用ActionFormBean的validate。方法進行表單驗

證。

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

ActionMcssage對象,就表示沒有錯誤,數(shù)據(jù)驗證通過。

4、如果ActionErrors中包含ActionMcssagc對象,就表示發(fā)生了驗證錯誤,

Struts框架會把ActionErrors對象保存到request范圍內(nèi),然后把請求轉(zhuǎn)發(fā)到

恰當?shù)囊晥D組件,視圖組件通過<html:enrors>標簽把request范圍內(nèi)的

ActionErrors對象中包含的錯誤消息顯示出來,提示用戶修改錯誤。

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

答案:

path屬性:指定請求訪問Action的路徑

type屬性:指定Action的完整類名

name屬性:指定需要傳遞給Action的ActionFormBean

scope屬性:指定ActionFormBean的存放范圍

validate屬性:指定是否執(zhí)行表單驗證

input屬性:指定當表單驗證失敗時的轉(zhuǎn)發(fā)路徑。

<action>元素還包含一個〈forward)子元素,它定義了一個請求轉(zhuǎn)發(fā)路徑。

6.簡單敘述ActionFormBean的作用

答案:

1>ActionFormBean也是一種JavaBean,除了具有一些JavaBean的常規(guī)方法,

還包含一些特殊的方法,用于驗證HTML表單數(shù)據(jù)以及將其屬性重新設(shè)置為默

認值。

2、Struts框架利用ActionFormBean來進行View組件和Controller組件之

間表單數(shù)據(jù)的傳遞。

3、Struts框架把View組件接受到的用戶輸入的表單數(shù)據(jù)保存在ActionForm

Bean中,把它傳遞給Controller組件,Controller組件可以對ActionForm

Bean中的數(shù)據(jù)進行修改JSP文件使用Struts標簽讀取修改后的ActionForm

Bean的信息,重新設(shè)置HTML表單。

7.敘述ActionForm執(zhí)行步驟

答案:

(1)檢查Action的映射,確定Action中已經(jīng)配置了對ActionForm的映射

(2)根據(jù)name屬性,查找formbean的配置信息

(3)檢查Action的formbean的使用范圍,確定在此范圍下,是否已經(jīng)有此

formbean的實例。

(4)假如當前范圍下,已經(jīng)存在了此formbean的實例,而是對當前請求來說,

是同一種類型的話,那么就重用。

(5)否則,就重新構(gòu)建一個formbean的實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論