JAVA常見(jiàn)題目答案_第1頁(yè)
JAVA常見(jiàn)題目答案_第2頁(yè)
JAVA常見(jiàn)題目答案_第3頁(yè)
JAVA常見(jiàn)題目答案_第4頁(yè)
JAVA常見(jiàn)題目答案_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、JAVA1. xml有哪些解析技術(shù)答:有DOM,SAX,STAX等      DOM(document object model 文檔對(duì)象模型)                         SAX(Simple API for XML) DOM:處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問(wèn)題是由DOM的樹(shù)結(jié)

2、構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問(wèn)SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開(kāi)頭,文檔結(jié)束,或者標(biāo)簽開(kāi)頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過(guò)在其回調(diào)事件中寫(xiě)入處理代碼來(lái)處理XML文件,適合對(duì)XML的順序訪問(wèn) STAX:Streaming API for XML (StAX)2. 2.面向?qū)ο蟮娜筇卦\(四大)1.抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中

3、的一部分,暫時(shí)不用部分細(xì)節(jié)。比如,我們要設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng),考察學(xué)生這個(gè)對(duì)象時(shí),我們只關(guān)心他的班級(jí)、學(xué)號(hào)、成績(jī)等,而不用去關(guān)心他的身高、體重這些信息。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數(shù)據(jù)抽象。過(guò)程抽象是指任何一個(gè)明確定義功能的操作都可被使用者看作單個(gè)的實(shí)體看待,盡管這個(gè)操作實(shí)際上可能由一系列更低級(jí)的操作來(lái)完成。數(shù)據(jù)抽象定義了數(shù)據(jù)類型和施加于該類型對(duì)象上的操作,并限定了對(duì)象的值只能通過(guò)使用這些操作修改和觀察。2.繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過(guò)程稱為類繼承。新類繼承了原始類的特性,新類稱

4、為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。這也體現(xiàn)了大自然中一般與特殊的關(guān)系。繼承性很好的解決了軟件的可重用性問(wèn)題。比如說(shuō),所有的Windows應(yīng)用程序都有一個(gè)窗口,它們可以看作都是從一個(gè)窗口類派生出來(lái)的。但是有的應(yīng)用程序用于文字處理,有的應(yīng)用程序用于繪圖,這是由于派生出了不同的子類,各個(gè)子類添加了不同的特性。3.封裝:封裝是面向?qū)ο蟮奶卣髦唬菍?duì)象和類概念的主要特性。封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一

5、系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。一旦定義了一個(gè)對(duì)象的特性,則有必要決定這些特性的可見(jiàn)性,即哪些特性對(duì)外部世界是可見(jiàn)的,哪些特性用于表示內(nèi)部狀態(tài)。在這個(gè)階段定義對(duì)象的接口。通常,應(yīng)禁止直接訪問(wèn)一個(gè)對(duì)象的實(shí)際表示,而應(yīng)通過(guò)操作接口訪問(wèn)對(duì)象,這稱為信息隱藏。事實(shí)上,信息隱藏是用戶對(duì)封裝性的認(rèn)識(shí),封裝則為信息隱藏提供支持。封裝保證了模塊具有較好的獨(dú)立性,使得程序維護(hù)修改較為容易。對(duì)應(yīng)用程序的修改僅限于類的內(nèi)部,因而可以將應(yīng)用程序修改帶來(lái)的影響減少到最低限度。4. 多態(tài)性:多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng)。比如同樣的加法,把兩個(gè)時(shí)間加在一起和把兩個(gè)整數(shù)加在

6、一起肯定完全不同。又比如,同樣的選擇編輯-粘貼操作,在字處理程序和繪圖程序中有不同的效果。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。3. 重寫(xiě)與重載的區(qū)別重寫(xiě)方法的規(guī)則如下: 1. 參數(shù)列表:必須與被重寫(xiě)方法的參數(shù)列表完全匹配。 2. 返回類型:必須與超類中被重寫(xiě)的方法中聲明的返回類型或子類型完全相同 3. 訪問(wèn)級(jí)別:一定不能比被重寫(xiě)方法強(qiáng),可以比被重寫(xiě)方法的弱。 4. 非檢查異常:重寫(xiě)方法可以拋出任何非檢查的異常,無(wú)論被重寫(xiě)方法是否聲明了該異常。 5. 檢查異常:重寫(xiě)方法一定不能拋出新的檢查異常,或比被重寫(xiě)方法聲

7、明的檢查異常更廣的檢查異常 6. 不能重寫(xiě)標(biāo)志為final,static的方法 重載方法的規(guī)則: 1. 參數(shù)列表:被重載的方法必須改變參數(shù)列表。 2. 返回類型:可以改變返回類型。 3. 修飾符:可以改變修飾符 4. 異常:可以聲明新的或者更廣泛的異常。 1. class Animal    2.     public void eat()   3.        4.   以下列出對(duì)于

8、Animal的eat方法各種重寫(xiě)重載實(shí)例,根據(jù)以上列出的規(guī)則,判斷其是否合法(以下的方法都屬于Animal的子類Horse的方法):1. private void eat()  不能通過(guò)編譯,非法重寫(xiě),訪問(wèn)修飾符限制性變強(qiáng);不屬于重載,因?yàn)閰?shù)列表沒(méi)有發(fā)生改變2. public void eat() throw RuntimeException  能通過(guò)編譯,屬于重寫(xiě),重寫(xiě)方法可以拋出任何非檢查異常。3. public void eat() throw IOException  不能通過(guò)編譯,非法重寫(xiě),重寫(xiě)方法一定不能拋出新的檢查異常

9、,或比被重寫(xiě)方法聲明的檢查異常更廣的檢查異常;不屬于重載,參數(shù)列表必須發(fā)生變化才屬于重載4. public void eat(String food)  能通過(guò)編譯,不是重寫(xiě);合法重載,因?yàn)閰?shù)列表發(fā)生改變了。5. public String eat()  不能通過(guò)編譯,不是重寫(xiě),因?yàn)槠浞祷仡愋?;不是重載,因?yàn)閰?shù)列表沒(méi)有發(fā)生改變。6. public String eat(int n) 可以通過(guò)編譯,不是重寫(xiě);是重載,首先參數(shù)列表必須發(fā)生變化,返回類型可以發(fā)生改變。 對(duì)父類被重寫(xiě)的方法做一個(gè)變動(dòng): 1. class 

10、;Animal    2.     public Animal eat() throws IOException   3.         return null;   4.        5.   7.  public Animal eat()return null;

11、  可以通過(guò)編譯,合法重寫(xiě),可以不拋出異常,只要不拋出新的異?;蚋鼜V泛的異常就可以。8.  public Animal eat() throws FileNotFoundExceptionreturn null; 可以通過(guò)編譯,是重寫(xiě),屬于子類的非檢查異常。9.  public Animal eat() throws Exception  不可以通過(guò)編譯,非法重寫(xiě),拋出了更廣泛的異常。10.  public Horse eat() 可以通過(guò)編譯,是重寫(xiě),因?yàn)榉祷仡愋涂梢允潜恢貙?xiě)的返回類型的子類。  1  

12、         重載(Overloading) (1)       方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個(gè)同名函數(shù)同時(shí)存在,具有不同的參數(shù)個(gè)數(shù)/類型。重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。(2)       Java的方法重載,就是在類中可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。調(diào)用方法時(shí)通過(guò)傳遞給它們的不同參數(shù)個(gè)數(shù)和參數(shù)類型來(lái)決定具

13、體使用哪個(gè)方法, 這就是多態(tài)性。(3)       重載的時(shí)候,方法名要一樣,但是參數(shù)類型和個(gè)數(shù)不一樣,返回值類型可以相同也可以不相同。無(wú)法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。 2     重寫(xiě)(Overriding)(1)    父類與子類之間的多態(tài)性,對(duì)父類的函數(shù)進(jìn)行重新定義。如果在子類中定義某            方法與其父類有相同的名稱和參

14、數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫(xiě)相同的方法。但有時(shí)子類并不想原封不動(dòng)地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫(xiě)。方法重寫(xiě)又稱方法覆蓋。(2)    若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數(shù)表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關(guān)鍵字,該關(guān)鍵字引用了當(dāng)前類的父類。(3)    子類函數(shù)的訪問(wèn)修飾權(quán)限不能少于父類的; 總結(jié):重載和重寫(xiě)(覆蓋)。   

15、0; 方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被“屏蔽”了,而且如果子類的方法名和參數(shù)類型和個(gè)數(shù)都和父類相同,那么子類的返回值類型必須和父類的相同;如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloadin

16、g)。Overloaded的方法是可以改變返回值的類型。也就是說(shuō),重載的返回值類型可以相同也可以不同。4. 抽象類與接口的區(qū)別1、抽象類里面可以有非抽象方法但接口里只能有抽象方法 聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽像類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽像類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽像構(gòu)造函數(shù)或抽像靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽像方法提供實(shí)現(xiàn),否則它們也是抽像類為。取而代之,在子類中實(shí)現(xiàn)該方法。知

17、道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。2、接口(interface)是抽像類的變體。在接口中,所有方法都是抽像的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽像的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)像上調(diào)用接口的方法。由于有抽像類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了

18、接口5. 說(shuō)說(shuō)你常用的工具及版本MyEclipse ,jdk,tomcat,6. JSP有哪些內(nèi)置對(duì)象?有哪些常用動(dòng)作,有什么作用1、 request對(duì)象:客戶端的請(qǐng)求信息被封裝在request對(duì)象中,通過(guò)它才能了解到客戶的需求,然后做出響應(yīng)。2、response對(duì)象:response對(duì)象包含了響應(yīng)客戶請(qǐng)求的有關(guān)信息。3、session對(duì)象:session對(duì)象指的是客戶端與服務(wù)器的一次會(huì)話,從客戶連到服務(wù)器的一個(gè)WebApplication開(kāi)始,直到客戶端與服務(wù)器斷開(kāi)連接為止。4、out對(duì)象:是向客戶端輸出內(nèi)容常用的對(duì)象5、page對(duì)象:page對(duì)象就是指向當(dāng)前JSP頁(yè)面本身,有點(diǎn)象類中的th

19、is指針。6、application對(duì)象:application對(duì)象實(shí)現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量。它開(kāi)始于服務(wù)器的啟動(dòng),直到服務(wù)器的關(guān)閉,在此期間,此對(duì)象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對(duì)此對(duì)象的同一屬性進(jìn)行操作;在任何地方對(duì)此對(duì)象屬性的操作,都將影響到其他用戶對(duì)此的訪問(wèn)。服務(wù)器的啟動(dòng)和關(guān)閉決定了application對(duì)象的生命。7、exception對(duì)象:exception對(duì)象是一個(gè)例外對(duì)象,當(dāng)一個(gè)頁(yè)面在運(yùn)行過(guò)程中發(fā)生了例外,就產(chǎn)生這個(gè)對(duì)象。如果一個(gè)JSP頁(yè)面要應(yīng)用此對(duì)象,就必須把isErrorPage設(shè)為true,否則無(wú)法編譯。8、pageContex

20、t對(duì)象:pageContext對(duì)象提供了對(duì)JSP頁(yè)面內(nèi)所有的對(duì)象及名字空間的訪問(wèn),也就是說(shuō)他可以訪問(wèn)到本頁(yè)所在的SESSION,也可以取本頁(yè)面所在的application的某一屬性值,他相當(dāng)于頁(yè)面中所有功能的集大成者,它的本 類名也叫pageContext。9、config對(duì)象:config對(duì)象是在一個(gè)Servlet初始化時(shí),JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時(shí)所要用到的參數(shù)(通過(guò)屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過(guò)傳遞一個(gè)ServletContext對(duì)象)。JSP動(dòng)作包括: jsp:include:在頁(yè)面被請(qǐng)求的時(shí)候引入一個(gè)文件。 jsp:useBean:尋

21、找或者實(shí)例化一個(gè)JavaBean。 jsp:setProperty:設(shè)置JavaBean的屬性。 jsp:getProperty:輸出某個(gè)JavaBean的屬性。 jsp:forward:把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁(yè)面。 jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記。7. Spring有哪些核心技術(shù)Spring為企業(yè)應(yīng)用的開(kāi)發(fā)提供了一個(gè)輕量級(jí)的解決方案,包括基于依賴注入的核心機(jī)制,基于AOP的聲明式事務(wù)管理,與多種持久層技術(shù)的整合,以及優(yōu)秀的Web MVC框架等。Spring支持對(duì)POJO(Plain Object Java Object,指最傳統(tǒng)的Java對(duì)象,

22、和任何模式都無(wú)關(guān))的管理。8. 堆和棧的區(qū)別在函數(shù)中定義的一些基本類型的變量和對(duì)象的引用變量都在函數(shù)的棧內(nèi)存中分配。      當(dāng)在一段代碼塊定義一個(gè)變量時(shí),Java就在棧中為這個(gè)變量分配內(nèi)存空間,當(dāng)超過(guò)變量的作用域后,Java會(huì)自動(dòng)釋放掉為該變量所分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作他用。      堆內(nèi)存用來(lái)存放由new創(chuàng)建的對(duì)象和數(shù)組。      在堆中分配的內(nèi)存,由Java虛擬機(jī)的自動(dòng)垃圾回收器來(lái)管理。      在堆中產(chǎn)生

23、了一個(gè)數(shù)組或?qū)ο蠛?,還可以在棧中定義一個(gè)特殊的變量,讓棧中這個(gè)變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個(gè)變量就成了數(shù)組或?qū)ο蟮囊米兞俊?     引用變量就相當(dāng)于是為數(shù)組或?qū)ο笃鸬囊粋€(gè)名稱,以后就可以在程序中使用棧中的引用變量來(lái)訪問(wèn)堆中的數(shù)組或?qū)ο蟆?   java中變量在內(nèi)存中的分配 1、類變量(static修飾的變量):在程序加載時(shí)系統(tǒng)就為它在堆中開(kāi)辟了內(nèi)存,堆中的內(nèi)存地址存放于棧以便于高速訪問(wèn)。靜態(tài)變量的生命周期-一直持續(xù)到整個(gè)"系統(tǒng)"關(guān)閉 2、實(shí)例變量:當(dāng)你使用j

24、ava關(guān)鍵字new的時(shí)候,系統(tǒng)在堆中開(kāi)辟并不一定是連續(xù)的空間分配給變量(比如說(shuō)類實(shí)例),然后根據(jù)零散的堆內(nèi)存地址,通過(guò)哈希算法換算為一長(zhǎng)串?dāng)?shù)字以表征這個(gè)變量在堆中的"物理位置"。 實(shí)例變量的生命周期-當(dāng)實(shí)例變量的引用丟失后,將被GC(垃圾回收器)列入可回收“名單”中,但并不是馬上就釋放堆中內(nèi)存 3、局部變量:局部變量,由聲明在某方法,或某代碼段里(比如for循環(huán)),執(zhí)行到它的時(shí)候在棧中開(kāi)辟內(nèi)存,當(dāng)局部變量一但脫離作用域,內(nèi)存立即釋放 附:java的內(nèi)存機(jī)制 Java 把內(nèi)存劃分成兩種:一種是棧內(nèi)存,另一種是堆內(nèi)存。    &

25、#160; 在函數(shù)中定義的一些基本類型的變量和對(duì)象的引用變量都是在函數(shù)的棧內(nèi)存中分配,當(dāng)在一段代碼塊定義一個(gè)變量時(shí),Java 就在棧中為這個(gè)變量分配內(nèi)存空間,當(dāng)超過(guò)變量的作用域后,Java 會(huì)自動(dòng)釋放掉為該變量分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作它用。堆內(nèi)存用來(lái)存放由 new 創(chuàng)建的對(duì)象和數(shù)組,在堆中分配的內(nèi)存,由 Java 虛擬機(jī)的自動(dòng)垃圾回收器來(lái)管理。在堆中產(chǎn)生了一個(gè)數(shù)組或者對(duì)象之后,還可以在棧中定義一個(gè)特殊的變量,讓棧中的這個(gè)變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個(gè)變量就成了數(shù)組或?qū)ο蟮囊米兞?,以后就可以在程序中使用棧中的引用變量?lái)訪問(wèn)堆中的數(shù)組或者對(duì)象,引用變量就相

26、當(dāng)于是為數(shù)組或者對(duì)象起的一個(gè)名稱。引用變量是普通的變量,定義時(shí)在棧中分配,引用變量在程序運(yùn)行到其作用域之外后被釋放。而數(shù)組和對(duì)象本身在堆中分配,即使程序運(yùn)行到使用 new 產(chǎn)生數(shù)組或者對(duì)象的語(yǔ)句所在的代碼塊之外,數(shù)組和對(duì)象本身占據(jù)的內(nèi)存不會(huì)被釋放,數(shù)組和對(duì)象在沒(méi)有引用變量指向它的時(shí)候,才變?yōu)槔?,不能在被使用,但仍然占?jù)內(nèi)存空間不放,在隨后的一個(gè)不確定的時(shí)間被垃圾回收器收走(釋放掉)。這也是 Java 比較占內(nèi)存的原因,實(shí)際上,棧中的變量指向堆內(nèi)存中的變量,這就是 Java 中的指針!9. 什么是反射JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)

27、對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語(yǔ)言的反射機(jī)制。JAVA反射(放射)機(jī)制:“程序運(yùn)行時(shí),允許改變程序結(jié)構(gòu)或變量類型,這種語(yǔ)言稱為動(dòng)態(tài)語(yǔ)言”。從這個(gè)觀點(diǎn)看,Perl,Python,Ruby是動(dòng)態(tài)語(yǔ)言,C+,Java,C#不是動(dòng)態(tài)語(yǔ)言。但是JAVA有著一個(gè)非常突出的動(dòng)態(tài)相關(guān)機(jī)制:Reflection,用在Java身上指的是我們可以于運(yùn)行時(shí)加載、探知、使用編譯期間完全未知的classes。換句話說(shuō),Java程序可以加載一個(gè)運(yùn)行時(shí)才得知名稱的class,獲悉其完整構(gòu)造(但不包括methods定義),并生成其對(duì)象實(shí)體、或?qū)ζ鋐ields設(shè)

28、值、或喚起其methods。10. AJAX的運(yùn)行機(jī)制XMLHTTPRequest?l 5個(gè)常用的開(kāi)源軟件CentOS、 Apache(httpd)、Jboss、Tomcat、Jmeter、Maven、Eclipse、Spring11. B/S與C/S的區(qū)別  C/S是Client/Server的縮寫(xiě)。客戶端需要安裝專用的客戶端軟件。      B/S是Brower/Server的縮寫(xiě)。客戶機(jī)上只要安裝一個(gè)瀏覽器。在這種結(jié)構(gòu)下,用戶界面完全通過(guò)WWW瀏覽器 實(shí)現(xiàn),一部分事務(wù)在前端實(shí)現(xiàn)。但是主要是邏輯在服務(wù)器端實(shí)現(xiàn)。瀏覽器通過(guò)

29、Web Server同數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互。C/S與B/S區(qū)別:     1).硬件環(huán)境不用:             C/S一般建立在專用的網(wǎng)絡(luò)上,小范圍里的網(wǎng)絡(luò)環(huán)境,局域網(wǎng)之間再通過(guò)專門(mén)服務(wù)器提供連接和交換服務(wù)。             B/S建立在廣域網(wǎng)之上的,不必是專門(mén)的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng),租用設(shè)備。信息

30、自己管理。有比 C/S更強(qiáng)的適應(yīng)范圍,一般只要有操作系統(tǒng)和瀏覽器就行。     2).對(duì)安全要求不同:           C/S一般面向相對(duì)固定的用戶群,對(duì)信息安全的控制能力很強(qiáng),一般高度機(jī)密的信息系統(tǒng)采用C/S結(jié)構(gòu)適宜, 可以通過(guò)B/S發(fā)布部分可公開(kāi)信息。          B/S建立在廣域網(wǎng)之上,對(duì)安全的控制能力相對(duì)弱,可能面向不可知的用戶。

31、      3).c處理問(wèn)題不同:           C/S程序可以處理用戶面固定,并且在相同的區(qū)域,安全要求高需要,與操作系統(tǒng)相關(guān)。應(yīng)該是相同的系統(tǒng)。 C/S的客戶端由于是本地程序,因此和本地硬件、程序的交互性很強(qiáng),比如可以控制本機(jī)的其他程序、可以讀寫(xiě)本 地磁盤(pán)文件、可以與硬件交互。           B/S建立在廣域網(wǎng)上

32、,面向不同的用戶群,分散地域,這是C/S無(wú)法做到的,與操作系統(tǒng)平臺(tái)關(guān)系最小,正因  為如此B/S很難喝本地硬件、程序、文件進(jìn)行交互,比如很難控制本機(jī)的其他程序、很難讀寫(xiě)本地磁盤(pán)文件、很難  與硬件交互,當(dāng)然可以用ActiveX技術(shù)解決,比如網(wǎng)銀等就是這么解決的,這樣做的問(wèn)題就是可能會(huì)被客戶端拒絕,  而且只局限于Windows操作系統(tǒng)。          C/S也分為兩層架構(gòu)和三層架構(gòu)。兩層架構(gòu):客戶端程序直接連數(shù)據(jù)庫(kù):三層架構(gòu):客戶端訪問(wèn)服務(wù)端的服務(wù),主要邏輯代碼寫(xiě)在服務(wù)端

33、的服務(wù)中,然后服務(wù)端服務(wù)再去訪問(wèn)數(shù)據(jù)庫(kù),Oracle版分布式呼叫中心,WCF12. MVC MVC全名是Model View Controller,是模型(model)視圖(view)控制器(controller)的縮寫(xiě),一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。13. Struts1和Struts2的區(qū)別 Struts1和Struts2的區(qū)別和對(duì)比:Action 類: St

34、ruts1要求Action類繼承一個(gè)抽象基類。Struts1的一個(gè)普遍問(wèn)題是使用抽象類編程而不是接口,而struts2的Action是接口。 Struts 2 Action類可以實(shí)現(xiàn)一個(gè)Action接口,也可實(shí)現(xiàn)其他接口,使可選和定制的服務(wù)成為可能。Struts2提供一個(gè)ActionSupport基類去 實(shí)現(xiàn) 常用的接口。Action接口不是必須的,任何有execute標(biāo)識(shí)的POJO對(duì)象都可以用作Struts2的Action對(duì)象。線程模式: Struts1 Action是單例模式并且必須是線程安全的,因?yàn)閮H有Action的一個(gè)實(shí)例來(lái)處理所有的請(qǐng)求。單例策略限制了Struts1 Action能作

35、的事,并且要在開(kāi)發(fā)時(shí)特別小心。Action資源必須是線程安全的或同步的。 Struts2 Action對(duì)象為每一個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例,因此沒(méi)有線程安全問(wèn)題。(實(shí)際上,servlet容器給每個(gè)請(qǐng)求產(chǎn)生許多可丟棄的對(duì)象,并且不會(huì)導(dǎo)致性能和垃圾回收問(wèn)題)Servlet 依賴: Struts1 Action 依賴于Servlet API ,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。 Struts 2 Action不依賴于容器,允許Action脫離容器單獨(dú)被測(cè)試。如果需要,Struts2 Action仍然可以

36、訪問(wèn)初始的request和response。但是,其他的元素減少或者消除了直接訪問(wèn)HttpServetRequest 和 HttpServletResponse的必要性??蓽y(cè)性: 測(cè)試Struts1 Action的一個(gè)主要問(wèn)題是execute方法暴露了servlet API(這使得測(cè)試要依賴于容器)。一個(gè)第三方擴(kuò)展Struts TestCase提供了一套Struts1的模擬對(duì)象(來(lái)進(jìn)行測(cè)試)。 Struts 2 Action可以通過(guò)初始化、設(shè)置屬性、調(diào)用方法來(lái)測(cè)試,“依賴注入”支持也使測(cè)試更容易。 捕獲輸入: Struts1 使用ActionForm對(duì)象捕獲輸入。所有的ActionForm必須繼承一個(gè)基類。因?yàn)槠渌鸍avaBean不能用作ActionForm,開(kāi)發(fā)者經(jīng)常創(chuàng)建多余的類捕獲輸入。動(dòng)態(tài)Bean(DynaBe

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論