2023年Java面試筆試的基礎(chǔ)知識_第1頁
2023年Java面試筆試的基礎(chǔ)知識_第2頁
2023年Java面試筆試的基礎(chǔ)知識_第3頁
2023年Java面試筆試的基礎(chǔ)知識_第4頁
2023年Java面試筆試的基礎(chǔ)知識_第5頁
已閱讀5頁,還剩110頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA1:簡述Java的基本歷史java起源于SUN公司的一個GREEN的項目,其原先目的是為家用消費電子產(chǎn)品發(fā)送一個信息的分布式代碼系統(tǒng),通過發(fā)送信息控制電視機、冰箱等.2:簡樸寫出Java特點,寫出5個以上,越多越好簡樸的、面向?qū)ο蟮?、分布式的、安全的、穩(wěn)定的、與平臺無關(guān)的、可解釋的、多線的、動態(tài)的語言。3:什么是Java?JAVA:一種編程語言一種開發(fā)環(huán)境一種應(yīng)用環(huán)境一種部署環(huán)境4:請寫出Java的版本分類,以及每種版本的應(yīng)用方向三種版本:J2ME:是面向內(nèi)存有限的移動終端.為消費性產(chǎn)品設(shè)計的J2SE:是SUN公司針對桌面開發(fā)和低端商務(wù)計算方案開發(fā)的版本。為筆記本電腦、PC機設(shè)計的J2EE:是一種運用JAVA2平臺來簡化公司解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。為公司級的、服務(wù)器端的高端應(yīng)用而設(shè)計的5:描述Java技術(shù)的重要特性java虛擬機垃圾回收代碼安全性6:描述Java虛擬機的功能提供硬件平臺規(guī)范解讀獨立于平臺的已編譯的字節(jié)碼可當(dāng)作硬件或軟件來實現(xiàn)可以在JAVA技術(shù)開發(fā)工具上或在WEB瀏覽器上實現(xiàn)7:簡述Java代碼安全性1.字節(jié)碼校驗2.沙箱機制,提供的安全機制8:簡述Java代碼的運營過程加載代碼通過類裝載器裝載CLASS文獻(xiàn)校驗代碼由字節(jié)碼校驗執(zhí)行代碼由解釋器將字節(jié)碼轉(zhuǎn)換成機器碼9:簡述如何搭建Java開發(fā)環(huán)境一方面下載安裝JDK然后配置環(huán)境1.配置PATH,2.配置CLASSPATH3.配置JAVA_HOME10:簡述classpath,path,JAVA_HOME的意義和配置方法path操作系統(tǒng)運營環(huán)境的途徑classpathJAVA運營應(yīng)用程序時所需要的類包途徑JAVA_HOME供需要運營JAVA的程序使用二:11:請描述:一個完整的Java文獻(xiàn)的代碼分幾個部分,每部分都起什么作用,大體的寫法package當(dāng)前類所在位置import當(dāng)前類運營時所需要的包或類publicclass類名{屬性定義;方法定義:構(gòu)造方法定義;publicstaticvoidmain(Stringargs[])例外{程序入口語句;}}注釋12:Java代碼的注釋有幾種?分別舉例說明1.//單行注解2./**/塊注釋3./***文檔注釋*/13:什么是Java代碼的語句,什么是Java代碼的塊,舉例說明語句是一行以分號終止的代碼,例:inta;塊是以{}為邊界的一些語句的集合例:publicvoidtt(){}14:什么是標(biāo)示符?標(biāo)記符:是賦予變量、類、方法的名稱。15:標(biāo)示符定義的規(guī)則?1.首字母只能以字母、下劃線、$開頭,其后可以跟字母‘下劃線、$和數(shù)字2.首字母小寫中間用大寫字母隔開3.標(biāo)記符具有一定的含義16:什么是關(guān)鍵字?關(guān)鍵字就是編程語言與機器語言的編碼約定17:true、false、null、sizeof、goto、const那些是Java關(guān)鍵字true、false、null為JAVA的關(guān)鍵字18:Java的基本數(shù)據(jù)類型有幾種?分別是?shortintlongbooleanfloatdoublecharbyte19:請寫出每種基本類型的默認(rèn)值?取值范圍?分別給出一個定義的例子默認(rèn)值取值范圍字節(jié)型:0-2^7----2^7-1字符型:'\u0000'0----2^16-1short:0-2^152^15-1int:0-2^31-2^31-1long:0-2^63----2^63-1float(yī):0.0f-2^31----2^31-1double:0.0d-2^63----2^63-1boolean:falsetrue\false20:在基本類型中,假如不明確指定,整數(shù)型的默認(rèn)是什么類型?帶小數(shù)的默認(rèn)是什么類型?整數(shù)類型默認(rèn)為int帶小數(shù)的默認(rèn)為double21:如何定義float類型和long型floatf=1.2flongl=1.2L22:什么是變量?變量:一種在程序中可以改變的標(biāo)記符23:變量的定義規(guī)則?1.首字母小寫中間用大寫字母隔開其后可以跟字母‘下劃線、$和數(shù)字2.具有一定含義3.首字母必須是字母、$、下劃線,24:請寫出Java編碼約定中對下列部分的規(guī)定:類、屬性、方法、包、文獻(xiàn)名、變量、常量、控制結(jié)構(gòu)、語句行、注釋類:一個類文獻(xiàn)中類名要和文獻(xiàn)名相同,類名一定要以大寫字母開頭單詞之間用大寫字母分隔屬性:屬性名首字母小寫中間用大寫字母隔開方法:方法名首字母小寫中間用大寫字母隔開包:引用包必須寫在類文獻(xiàn)的開頭,有且只能有一個包所有用小寫字母控制結(jié)構(gòu):當(dāng)語句是控制結(jié)構(gòu)的一部分時,即使是單個語句,也應(yīng)使用大括號將語句封閉:語句行:每行只寫一個語句,并使用四個縮進(jìn)的空格,使代碼更易讀,注意用分號結(jié)束;注釋:用注釋來說明那些不明顯代碼的段落;常量:常量名一般用大寫字母,單詞之間用下劃線分隔,一旦賦值不允許修改25:什么是Javadoc?按照一定格式生成程序的文檔的工具26:什么是引用類型?一個用戶定義類型,它可引用類和數(shù)組。27:什么是按值傳遞?什么是按引用傳遞?值傳遞:就是將該值的副本傳過去(基本數(shù)據(jù)類型+String類型的傳遞,就是按值傳遞)按引用傳遞:就是將值的內(nèi)存地址傳過去(除基本數(shù)據(jù)類型+String以外類型的傳遞,就是引用傳遞)28:那些是按值傳遞?那些是按引用傳遞?基本數(shù)據(jù)類型+String類型按值傳遞除基本數(shù)據(jù)類型+String類型以外,比如Models[]按引用傳遞29:如何創(chuàng)建一個新對象?如何使用對象中的屬性和方法?publicclassS{}通過對象的實例用(.)來調(diào)用屬性和方法;靜態(tài)的方法和屬性,也可以直接用類(.)來調(diào)用;30:簡述new關(guān)鍵字所做的工作new關(guān)鍵字就是為事先聲明的對象分派一塊內(nèi)存區(qū)域;31:簡述”=”和”==”的功能和區(qū)別"="賦值,"=="判斷==前后兩個值得內(nèi)存地址是否相等;區(qū)別:=:為賦值表達(dá)式==:為邏輯表達(dá)式32:什么是實例變量?什么是局部變量?什么是類變量?什么是final變量?實例變量:類中定義的變量,即類成員變量,假如沒有初始化,會有默認(rèn)值;局部變量:在方法中定義的變量,必須初始化;類變量:用static可修飾的屬性;final變量:final屬性只允許賦值一次,且只能通過構(gòu)造方法賦值;定義后也就是一個常量;33:簡述上述各種變量的定義規(guī)則和使用規(guī)則?實例變量:它不需要static關(guān)鍵字來聲明,只要對象被當(dāng)作引用,實例變量就將存在;局部變量:在方法內(nèi)任意定義變量即為局部變量;類變量:必須用static修飾;final變量:不可以在修改的34:a++和++a的區(qū)別?a++:先使用,后加1++a:先加1,后使用34:請描述instanceof、?:、&、&&各自的功能instanceof:用來判斷某個實例變量是否屬于某種類的類型。?:三目運算符:表達(dá)式1?表達(dá)式2:表達(dá)式3假如表達(dá)式1為true,執(zhí)行表達(dá)式2,否則執(zhí)行表達(dá)式3&:位運算:按位與&&:邏輯運算:邏輯與35:請描述>>、<<、>>>的功能>>:算術(shù)或符號右移位運算符<<:算術(shù)或符號右移位左移運算符>>>:邏輯或非符號右移位運算符36:請描述什么是強制類型轉(zhuǎn)換?什么是自動類型轉(zhuǎn)換?什么是向上造型?并分別舉例說明 強制類型轉(zhuǎn)換:在一個類型前面加(),來強制轉(zhuǎn)換??longl=9L; ?inti=(int)l;自動類型轉(zhuǎn)換:?inti=5;Stringstr=""+i;向上造型:把范圍小的造型為范圍大的類型,inti=2;longl=i;37:請寫出完整的if條件控制語句的結(jié)構(gòu)if(布表達(dá)式){語}else{}38:請寫出完整的switch語句的結(jié)構(gòu)switch(字符){case字符:語句break;case字符:語句break;default:語句}39:請寫出完整的for語句的結(jié)構(gòu)for(初始語句;條件語句;步長){}40:請寫出完整的while語句的結(jié)構(gòu)while(boolean語句){}41:請寫出完整的dowhile語句的結(jié)構(gòu)do{}while(boolean語句);42:請描述break和continue的功能和用法break:終止最近的循環(huán)continue:跳出本次循環(huán),執(zhí)行下一次循環(huán)//以上不完全43:定義一個一維的int數(shù)組,先創(chuàng)建它,并初始化它,給它賦值,然后輸出其中的一個值publicclassArr{publicstaticvoidmain(Stringargs[]){ inta[]=newint[5];?a={1,2,3,4,5};//錯誤,只能在初始化時這樣做a[0]=1;a[1]=2; System.out.println(a[0]);}}44:定義一個一維的A類型數(shù)組,直接定義并賦值,然后輸出其中的一個值publicclassA{publicstai;publicstaticvoidmain(Stringargs[]){Aaa=newA();Abb=newA();?Aa[]={aa,bb};a[0].i=2;?System.out.println(a[0]);}}45:把上面的數(shù)組改成2維的數(shù)組publicclassA{publicstaticinti;publicstaticvoidmain(Stringargs[]){ Aa[][]=newA[5][5]; a[0][0].i=2;?System.out.println(a[0][0]);}}46:舉例說明數(shù)組拷貝方法的使用:arraycopy方法publicclassA{publicstaticvoidmain(Stringargs[]){ inta[]=ne[5];?intb[]=newint[5];System.arraycopy(a[5],0,b[5],0,a.length) System.out.println(b[0][0]);}}二、面向?qū)ο?:OOP(面向?qū)ο?語言的三大特性是?封裝性,繼承性,多態(tài)性2:請描述方法定義的完整的語法結(jié)構(gòu)權(quán)限修飾符修飾符返回類型方法名(參數(shù))例外{方法體;}訪問權(quán)限+訪問修飾符+返回值+方法名+參數(shù)列表+例外列表+(塊)方法內(nèi)部代碼3:什么是重載?什么情況下出現(xiàn)?在一個類中出現(xiàn)相同的方法名但參數(shù)列表不同時,這種情況就是重載其本質(zhì)是創(chuàng)建一個新的成員方法此方法在同一個類中出現(xiàn)4:簡述重載的規(guī)則1.方法名相同,參數(shù)列表不同2.返回類型可以不同3.重載父類的方法時訪問權(quán)限只能放大,例外列表只能少5:什么是構(gòu)造和析構(gòu)方法?功能是?構(gòu)造方法:每個類至少有一個構(gòu)造方法,類構(gòu)成實例化時調(diào)用的方法1.方法名和類名相同2.無返回值類型格式:訪問權(quán)限類名{};1.有構(gòu)造時,則無默認(rèn)2.無構(gòu)造方法時,默認(rèn)為空(無參數(shù),方法體為空)jc垃圾回收析構(gòu)方法:finalize類銷毀時,自動調(diào)用方法當(dāng)對象在內(nèi)存中被刪除時,自動調(diào)用該方法在此方法中可以寫回收對象內(nèi)部的動態(tài)空間的代碼構(gòu)造方法:類初始化時調(diào)用的方法??蓪懣刹粚?假如不寫就會有一個默認(rèn)的構(gòu)造方法析構(gòu)方法:當(dāng)對象被從內(nèi)存中刪除時調(diào)用的方法,在析構(gòu)成員方法內(nèi),可以填寫用來回收對象內(nèi)部的動態(tài)空間的代碼6:簡述this和super的功能和用法this:訪問當(dāng)前類的屬性或方法,不可以在靜態(tài)方法中使用,在調(diào)用其它構(gòu)造方法時,必須放在該構(gòu)造方法的第一行能調(diào)用除構(gòu)造方法以外所有的屬性,方法;通過This(.)來調(diào)用方法和屬性super:訪問父類super只能調(diào)用父類的方法和屬性,在調(diào)用父類的構(gòu)造方法時必須放在子類構(gòu)造方法下面的第一行;通過Super(.)來調(diào)用父類的屬性和方法7:簡述Java的訪問修飾符類型?分別有什么功能?public公開的,任何一個類都有可以訪問private私有的,只能在本類中被訪問protected同包同類,只可被它的子類訪問default只能被同一個包中類訪問8:分別說明:在類上、在屬性上、在方法上等能使用那些訪問修飾符在類上:public在方法上:訪問權(quán)限:publicprotectedprivatedefault方法修飾符:staticfinal返回類型:void在屬性上:publicprotectedprivatedefaultstaticfinal9:簡述什么是包?包的功能包:對所定義的多個JAVA類進(jìn)行分組,將多個功能相關(guān)的類定義到一個包(文獻(xiàn))中功能:1.易于查找和使用適當(dāng)?shù)念悾?包不止包含類和接口,還可以包含其它包,形成層次的包空間3.有助于避免命名沖突10:請寫出5個以上的JDK中的包,以及他們的基本功能java.awt:包含構(gòu)成抽象窗口工具集的多個類,用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面java.lang:提供java編成語言的程序設(shè)計的基礎(chǔ)類java.io:包含提供多種輸出輸入功能的類,java.net:包含執(zhí)行與網(wǎng)絡(luò)有關(guān)的類,如URL,SCOKET,SEVERSOCKET,java.applet:包含java小應(yīng)用程序的類java.util:包含一些實用性的類11:什么是包裝類?Java中都有哪些包裝類BooleanByteShortIntegerLongFloatDoubleCharactor在JDK中針對各種基本類型分別定義相應(yīng)的引用類型-------稱為封裝類12:分別表述類的三大特性及其他們的功能封裝性繼承性多態(tài)性封裝:隱藏類的實現(xiàn)細(xì)節(jié)、迫使用戶去使用一個接口去訪問數(shù)據(jù)、使代碼更好維護(hù)繼承:子類可以直接繼承使用父類的方法,程序員只需要做的是定義額外特性或規(guī)定將合用的變化 多態(tài)性:同一種功能擁有許多不同的實現(xiàn)方式13:如何實現(xiàn)繼承?繼承的規(guī)則?publicclassAextendsB{}1.單繼承性2.構(gòu)造方法不能繼承3.super引用父類,調(diào)用父類的屬性,方法4.當(dāng)子類中出現(xiàn)與父類的方法名,返回類型,參數(shù)列表相同的方法時要覆蓋此方法14:什么是方法的覆蓋?什么情況下出現(xiàn)?方法覆蓋:子類可以修改從父類繼承過來的行為,子類可以創(chuàng)建一個與父類方法有不同功能的方法在同類型中出現(xiàn)相同的名稱、返回類型方法名和參數(shù)列表的方法時在父子類時15:方法覆蓋的規(guī)則?方法名要和父類中被覆蓋的方法名相同,返回類型相同參數(shù)列表要和父類中被覆蓋方法的參數(shù)列表相同訪問權(quán)限要大于等于被覆蓋方法的權(quán)限例外列表要小于等于被覆蓋方法的例外列表16:如何調(diào)用父類的構(gòu)造方法?如何調(diào)用自己的構(gòu)造方法?要調(diào)用父類的構(gòu)造方法通過在子類的構(gòu)造方法中第一行寫super(參數(shù))能給父類傳參;要調(diào)用自己的構(gòu)造方法通過this(參數(shù))或者直接調(diào);17:如何擬定在多態(tài)的調(diào)用中,究竟是調(diào)用的那個方法?new的是哪一個類就是調(diào)用的哪個類的方法18:static修飾符的功能是?可以用在什么地方?怎么訪問?static修飾符功能:1.共用一塊內(nèi)存區(qū)域,也就是一個變量或成員方法對所有類的實例都是相同的2.靜態(tài)成員方法和靜態(tài)變量的優(yōu)點在于他們能在沒有創(chuàng)建類的任何一個實例的情況下被引用3.可以用在方法或?qū)傩陨显L問方式:1.直接使用類名調(diào)2.new一個實例,用實例調(diào)19:static的基本規(guī)則1.類中的靜態(tài)方法不允許調(diào)用非靜態(tài)的屬性和方法,只可以調(diào)用靜態(tài)的屬性和方法2.可以用類名直接調(diào)用靜態(tài)類中的屬性和方法3.靜態(tài)方法中不允許出現(xiàn)this和super4.靜態(tài)方法不能被非靜態(tài)方法覆蓋5.構(gòu)造方法不允許聲明static6.靜態(tài)變量為類變量,可以直接調(diào)7.非靜態(tài)變量為實例變量,通過實例調(diào)用20:final修飾符的功能是?可以用在什么地方?功能:標(biāo)記所有通用的功能,不能隨意更改可以用在類、屬性和方法上21:final的基本規(guī)則final類不能被繼承final成員變量只允許賦值一次,且只能通過構(gòu)造方法里賦值final局部變量即為常量,只能賦值一次final方法不允許被子類覆蓋final一般用于標(biāo)記那些通用性的功能不能隨意修改22:什么是抽象類?抽象類:一個類中聲明方法存在而不是實現(xiàn),以及帶有對已知行為的方法的實現(xiàn),這樣的類通常被稱做抽象類23:抽象類的規(guī)則?類內(nèi)部至少包含一個沒有實現(xiàn)體的方法 用abstract修飾?不可以直接使用抽象類,必須通過子類繼承并且實現(xiàn)24:什么情況下使用抽象類當(dāng)一個類的一個或多個方法是抽象類時;當(dāng)類是一個抽象類的子類,并且不能為任何抽象方法提供任何實現(xiàn)細(xì)節(jié)或方法體時;當(dāng)一個類實現(xiàn)一個接口,并且不能為任何抽象方法提供實現(xiàn)細(xì)節(jié)或方法體時25:equals方法和”==”的功能和區(qū)別功能:判斷對象是否相等區(qū)別:equals方法比較的是對象的值==:比較的是對象值的內(nèi)存地址,對基本數(shù)據(jù)類型來說==比較的也是值26:toString方法的功能和基本寫法返回一個String類型publicStringtoString(){}30:String的方法的功能和基本使用方法,請描述5個以上substring(參數(shù)1,參數(shù)2);功能:取字符串中參數(shù)1到參數(shù)2的的所有字符;"String".subString(0,1);replace(參數(shù)1,參數(shù)2);功能:用參數(shù)1中的值替換字符串中所有參數(shù)2的值"String".replace(ing,tt);equals();功能:判斷兩個字符串是否相等"String".equals("tt");trim();功能:去掉字符串兩邊的空格"String".trim();indexof();功能:查找字符串中參數(shù)所在位置,并返回字符串第一個出該參數(shù)的下標(biāo)"String".indexOf("ing");split();功能:根據(jù)參數(shù)分割該字符串"String".split("-");31:為什么使用StringBuffer類?有什么功能和優(yōu)點? --只創(chuàng)建一個對象 –StringBuffer?qū)ο蟮膬?nèi)容是可以被修改的 –除了字符的長度之外,尚有容量的概念 –通過動態(tài)改變?nèi)萘康拇笮?,加速字符管?2:舉例說明如何使用StringBufferStringBuffersb=newStringBuffer();sb.append("aaa");sb.flush();33:如何給Java代碼設(shè)立系統(tǒng)屬性?如何在程序中使用它們設(shè)立在一個擴展名為properties的文獻(xiàn),內(nèi)容為key、value的映射例如“a=2”System.getProperties();System.setProperties();34:簡述properties文獻(xiàn)的結(jié)構(gòu)和基本用法結(jié)構(gòu):?key=value用法:?System.getProperties方法返回系統(tǒng)的Properties對象。? ?System.getProperty(StringpropertyName)方法返回相應(yīng)名字屬性的值。 System.getProperty(Stringname,Stringvalue)重載方法當(dāng)沒有name指定的屬性時,返回value指定的缺省值。?35:什么是接口?接口的定義規(guī)則?接口就是定義多種方法,通過實現(xiàn)接口中所有方法的抽象類.publicinterfaceTt{publicvoidoutPut();tt();}36:接口的作用?為什么使用接口?多重繼承封裝、隔離功能,實現(xiàn)的分離 多態(tài)便于后期維護(hù)接口是可插入性的保證。37:什么是多重接口就是一個類實現(xiàn)多個接口38:描述接口的基本思想?封裝隔離接口及相關(guān)機制的最基本作用在于:通過接口可以實現(xiàn)不相關(guān)類的相同行為,而不需考慮這些類之間的層次關(guān)系。?根據(jù)接口可以了解對象的交互界面,而不需了解對象所屬的類。 面向?qū)ο蟪绦蛟O(shè)計講究“提高內(nèi)聚,減少耦合”。39:如何在代碼中使用接口?publicclassMyCastimplementsTt{publicvoidoutPut(){}publicinttt(){return0;}}40:舉例說明如何把接口當(dāng)作類型使用publicinterfaceAnimal(){publicvoidtt();}publicclassDogimplementsAnimal{publicvoidtt(){}}Animalani=newDog();41:如何選擇接口和抽象類?為什么?1.優(yōu)先選擇接口2.優(yōu)先使用對象組合,少用繼承3.抽象類一般用在定義子類的行為而父類又有特定行為的子類情況中4.在接口和抽象類的選擇上,必須遵守這樣一個原則:行為模型應(yīng)當(dāng)總是通過接口而不是抽象類定義。42:什么是異常??程序中導(dǎo)致程序中斷的一些情況叫做異常,一般程序員可以解決43:簡述解決異常的兩種方式??拋出和catch語句解決43:簡述try塊的功能和規(guī)則 try塊內(nèi)部一般寫一些編程人員認(rèn)為也許會出現(xiàn)異常的代碼,使程序運營不會由于出現(xiàn)異常而中斷44:簡述catch塊的功能和規(guī)則功能:可以截獲所聲明的異常,并在語句塊內(nèi)對其進(jìn)行解決規(guī)則:cat(yī)ch(Exeptione){ System.out.println("thisisanExeption!"); }45:簡述finally塊的功能和規(guī)則 finally塊一般寫一些不管是否發(fā)生異常都必須執(zhí)行一次的代碼?例如關(guān)閉與數(shù)據(jù)庫的連接等46:簡述throw和throws的功能和使用方法?throw指編程人員積極拋出一個異常 thrownewNullPointerExeption();?throws指程序碰到異常情況自動的被動拋出一個異常?publicvoidtest()throwsExeption{}47:異常的分類? 錯誤(Error):JVM系統(tǒng)內(nèi)部錯誤、資源耗盡等嚴(yán)重情況,程序員不可控制例外(Exception):其它因編程錯誤或偶爾的外在因素導(dǎo)致的一般性問題,程序可以控制48:什么是預(yù)定義異常 java程序中預(yù)先定義好的異常叫做預(yù)定義異常49:簡述自定義異常的規(guī)則寫一個類繼承Exception用戶自定義異常通常屬Exception范疇,依據(jù)慣例,應(yīng)以Exception結(jié)尾,應(yīng)當(dāng)由人工創(chuàng)建并拋出。50:什么是斷言??用來證明和測試程序的假設(shè)。51:如何使用斷言?舉例說明 一種是assert<<布爾表達(dá)式>>;另一種是assert<<布爾表達(dá)式>>:<<細(xì)節(jié)描述>>。 asserta==10:"這里a等于10";52:什么是集合?什么是元素??可以包含其他對象的簡樸對象就叫集合 集合框架中所包含的對象就叫做元素53:描述出Java集合框架中集合的接口關(guān)系Collection-Set和List?Set----HashSet和SortedSet List----ArrayList和LinkedList Map-HashMap、SortedMap和TreeMap54:代碼示例:Collection接口的使用,涉及如何定義、初始化、賦值、取值、修改值除值?Collectioncol=newArrayList();?StringoldValue="abcd"; StringnewValue="1234";?//增長?col.add(oldValue);?Iteratorit=col.iterator(); while(it.hasNext()){ ?//取值? Stringstr=(String)it.next(); ?if(str.equals(oldValue)){ ?//刪除? ?col.remove(oldValue); ? //修改 ??col.add(newValue); ?} } 55:代碼示例:List接口的使用,涉及如何定義、初始化、賦值、取值、修改值、刪值 Listcol=newArrayList();?StringoldValue="abcd";?StringnewValue="1234";?col.add(oldValue);?Iteratorit=col.iterator(); while(it.hasNext()){ ?Stringstr=(String)it.next(); ?if(str.equals(oldValue)){ ? col.remove(oldValue); ? col.add(newValue);? }?}56:代碼示例:Set接口的使用,涉及如何定義、初始化、賦值、取值、修改值、刪值?Setcol=newHashSet(); StringoldValue="abcd";?StringnewValue="1234";?col.add(oldValue);?Iteratorit=col.iterator(); while(it.hasNext()){ Stringstr=(String)it.next(); ?if(str.equals(oldValue)){ ?col.remove(oldValue);???col.add(newValue); ?} }57:代碼示例:Map接口的使用,涉及如何定義、初始化、賦值、取值、修改值、刪 Mapmap=newHashMap();?StringoldValue="abcd";?StringnewValue="1234"; //增長?col.put("1",oldValue);?Setset=map.keySet();?Iterat(yī)orit=set.iterat(yī)or();?while(it.hasNext()){ ?Stringkey=(String)it.next(); //取值??Stringvalue=map.get(key); } //修改 map.put("1",newValue);?//刪除?map.remove("1");}58:描述List接口、Set接口和Map接口的特點 List接口中的對象按一定順序排列,允許反復(fù)?Set接口中的對象沒有順序,但是不允許反復(fù)?Map接口中的對象是key、value的映射關(guān)系,key不允許反復(fù)59:如何給集合排序??實現(xiàn)comparable接口三、IO1:什么是流?可畫圖說明 字符串分解==============OutStream==========>write()方法寫到文獻(xiàn)中2:描述I/O流的基本接口和類的結(jié)構(gòu) InputStream OutputStream3:代碼示例:如何使用URL流來進(jìn)行輸入輸出?try{ imageSource=newURL("~info");?}catch(MalformedURLExceptione){?}4:什么是Unicode? 是一種字符的編碼方式5:代碼示例:如何使用Reader和Writer來進(jìn)行輸入輸出 InputStreamReader ir=newInputStreamReader(System.in); OutStreamReaderor=newOutStreamReader(System.in);6:什么是可序列化?如何實現(xiàn)可序列化? 表達(dá)一個數(shù)據(jù)可以按流式輸出?實現(xiàn)java.io.Serializable接口?7:代碼示例:如何讀寫對象流?//讀try{ Stringstr="123"; FileOutputStreamf=newFileOutputStream("test.txt"); ?ObjectOutputStreams=newObjectOutputStream(f);??s.writeObject(str); ?f.close(); }cat(yī)ch(Exceptione){ ?e.printStackTrace();} //寫 try{??FileInputStreamf=new FileInputStream("test.txt"); ?ObjectInputStreams=new ObjectInputStream(f);??str=(String)s.readObject();? f.close(); }catch(Exceptione){? e.printStackTrace(); }8:簡述File類的基本功能 解決文獻(xiàn)和獲取文獻(xiàn)信息,文獻(xiàn)或文獻(xiàn)夾的管理 除了讀寫文獻(xiàn)內(nèi)容其他的都可以做9:代碼示例:如何使用隨機文獻(xiàn)讀寫類來讀寫文獻(xiàn)內(nèi)容RW表達(dá)文獻(xiàn)時可讀寫的?讀: try{RandomAccessFilef=newRandomAccessFile("test.txt","rw");longlen=0L;longallLen=f.length();inti=0;while(len<allLen){Strings=f.readLine();if(i>0){col.add(s);}i++;//游標(biāo)len=f.getFilePointer();}}catch(Exceptionerr){err.printStackTrace();}寫:try{RandomAccessFilef=newRandomAccessFile("test.txt","rw");StringBufferbuffer=newStringBuffer("\n");Iterat(yī)orit=col.iterator();while(it.hasNext()){buffer.append(it.next()+"\n");}f.writeUTF(buffer.toString());}catch(Exceptionerr){err.printStackTrace();}10:代碼示例:如何使用流的基本接口來讀寫文獻(xiàn)內(nèi)容 try{ ?DataInputStreamin= ?newDat(yī)aInputStream( newBufferedInputStream( newFileInputStream("Test.java") ?) ); ?while((currentLine=in.readLine())!=null){ System.out.println(currentLine); ?}?}cat(yī)ch(IOExceptione){? System.err.println("Error:"+e);?}四、線程1:什么是線程??輕量級的進(jìn)程 2:線程的三個部分是??解決機 代碼?數(shù)據(jù)3:為什么使用多線程 使UI響應(yīng)更快?運用多解決器系統(tǒng)?簡化建模4:代碼示例:Java中實現(xiàn)多線程的兩種方式,涉及如何定義多線程,如何使用多線程 4.1實現(xiàn)Runnable接口?classThread1implementsRunnable{??publicvoidrun(){ //run里一般寫一個while(true)循環(huán)???System.out.println(Runnable); ?} }?4.2繼承Thread?classThread2extendsThread{ ?publicvoidrun(){? ?System.out.println(extends);??} } publicclassTest{? publicstaticvoidmain(String[]a){ ? Thread1r=newThread1();???Threadt1=newThread(r);? Threadt2=newThread(r); ? t1.start();? ?t2.start();? ?Threadt3=newThread2(); ??t3.start(); } } 5:如何實現(xiàn)線程的調(diào)度?如何暫停一個線程的運營 調(diào)度用wait和notify sleep()6:什么是線程的優(yōu)先級?判斷哪個線程先執(zhí)行的級別7:簡述sleep方法和wait方法的功能和區(qū)別?sleep是讓線程休眠一段時間 wait是讓線程掛起8:什么是守候線程?隱藏在后臺連續(xù)運營的線程9:什么是臨界資源 指多個線程共享的資源10:什么是互斥鎖,Java中如何實現(xiàn) 用來保證在任一時刻只能有一個線程來訪問臨界資源的那個標(biāo)記 用在對象前面限制一段代碼的執(zhí)行用在方法聲明中,表達(dá)整個方法為同步方法。11:什么是死鎖?如何避免? 假如程序中有多個線程競爭多個資源,就也許會產(chǎn)生死鎖。當(dāng)一個線程等待由另一個線程持有的鎖,而后者正在等待已被第一個線程持 有的鎖時,就會發(fā)生死鎖。 要避免死鎖,應(yīng)當(dāng)保證在獲取多個鎖時,在所有的線程中都以相同的順序獲取鎖。 盡量少用臨界資源12:簡述wait和notify,notifyAll的使用 被鎖定的對象可以調(diào)用wait()方法,這將導(dǎo)致當(dāng)前線程被阻塞并放棄該對象的互斥鎖,即解除了wait()方法的當(dāng)前對象的鎖定狀態(tài),其?他的線程就有機會訪問該對象。 notify使等待隊列上的一個線程離開阻塞狀態(tài) notifyAll使等待隊列上的所有線程離開阻塞狀態(tài)13:什么是url?基本的格式是? 統(tǒng)一資源定位器?Http://www.163.com:port14:簡述IP,Port,TCP的基本功能 IP代表網(wǎng)絡(luò)位置?Port代表端標(biāo)語 TCP可保證不同廠家生產(chǎn)的計算機能在共同網(wǎng)絡(luò)環(huán)境下運營,解決異構(gòu)網(wǎng)通信問題,是目前網(wǎng)絡(luò)通信的基本協(xié)議15:簡述Java網(wǎng)絡(luò)模型的基本功能 描述服務(wù)端和客戶端的連接過程16:簡述Java網(wǎng)絡(luò)編程究竟做些什么?如何做? 1.建立連接?2.準(zhǔn)備輸出的數(shù)據(jù),流式輸出?3.流式輸入,編程業(yè)務(wù)需要的格式 4.關(guān)閉連接?服務(wù)器分派一個端標(biāo)語。假如客戶請求一個連接,服務(wù)器使用accept()方法打開socket連接。?客戶在host的port端口建立連接。?服務(wù)器和客戶使用InputStream和OutputStream進(jìn)行通信。17:代碼示例:基于Socket編程?try{? ServerSockets=newServerSocket(8888); while(true){???Sockets1=s.accept();? ?OutputStreamos=s1.getOutputStream();? ?DataOutputStreamdos=newDataOutputStream(os);dos.writeUTF("Hello,"+s1.getInetAddress()+"port#"+s1.getPort()+"\nbye!");???dos.close();?? s1.close();? }?}catch(IOExceptione){??System.out.println("程序運營犯錯:"+e); }18:代碼示例:基于UDP編程19:TCP和UDP區(qū)別?TCP能保證傳輸內(nèi)容的完整和準(zhǔn)確,UDP不能五、設(shè)計模式1:什么是設(shè)計模式? 就是通過實踐驗證的用來解決特定環(huán)境下特定問題的解決方案2:設(shè)計模式用來干什么??尋找合適的對象 決定對象的粒度 指定對象的接口 描述對象的實現(xiàn) 運用復(fù)用機制 反復(fù)使用通過實踐驗證的對的的,用來解決某一類問題的解決方案來達(dá)成減少工作量、提高對的率等目的3:什么是對象粒度 對象中方法的多少就是粒度4:基本的Java編程設(shè)計應(yīng)遵循的規(guī)則??面向接口編程,優(yōu)先使用對象組合5:設(shè)計模式的應(yīng)用范圍 所能解決的特定的一類問題中6:簡述什么是單例模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì) 在任何時間內(nèi)只有一個類實例存在的模式?需要有一個從中進(jìn)行全局訪問和維護(hù)某種類型數(shù)據(jù)的區(qū)域的環(huán)境下使用單例模式?解決方案就是保證一個類只有一個類實例存在 本質(zhì)就是實例共用同一塊內(nèi)存區(qū)域 7:代碼示例:單例模式的兩種實現(xiàn)方法,并說明優(yōu)缺陷?publicclassTest{? publicTest(){? } ?privatestaticTesttest=newTest();??publicstaticTestgetInstance(){???returntest;? } }?publicclassTest{ ?privatestaticTesttest=null; ?privateTest(){ }??publicstat(yī)icTestgetInstance(){ ? if(test==null){ ? ?test=newTest();? ?} returntest;? }?} 第二種方式不需每次都創(chuàng)建一個類實例,而只是在第一次創(chuàng)建 8:簡述什么是工廠模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì) 運用工廠來解決接口選擇的問題的模式應(yīng)用環(huán)境:當(dāng)一個類無法預(yù)料要創(chuàng)建哪種類的對象或是一個類需要由子類來指定創(chuàng)建的對象時,就需要用到工廠模式解決方案:定義一個創(chuàng)建對象的接口,讓子類來決定具體實例化哪一個類?本質(zhì)就是根據(jù)不同的情況來選擇不同的接口9:代碼示例:工廠模式的實現(xiàn)方法 publicclassFactory{ ?publicstaticSamplecreator(intwhich){ ??if(which==1){ returnnewSampleA(); ??}elseif(which==2)? ?returnnewSampleB();???} ?}?}PublicclassMyFactory{PublicstaticmyFactoryf=null;PublicMyFactory(){}PublicstaticMyFactorygetInstance(){If(f==null){F=newMyFactory();}}PublicDBDAOgetDAO(){ReturnnewDBDAOImpl();}}10述什么是值對象模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì) 用來把一組數(shù)據(jù)封裝成一個對象的模式 解決問題:在遠(yuǎn)程方法的調(diào)用次數(shù)增長的時候,相關(guān)的應(yīng)用程序性能將會有很大的下降 解決方案:使用值對象的時候,可以通過僅僅一次方法調(diào)用來取得整個對象,而不是使用多次方法調(diào)用以得到對象中每個域的數(shù)值?本質(zhì):就是把需要傳遞的多個值封裝成一個對象一次性傳過去?11:代碼示例:值對象模式的實現(xiàn)方法?publicclassUserModel{? privat(yī)eStringuserId;? privateStringuserName;? ?publicvoidsetUserId(Stringid){ ??this.userId=id;? }? publicStringgetUserId(){? ?returnuserId; ?} publicvoidsetUserName(Stringname){ ?this.userName=name;? }??publicStringgetUserName(){ ? returnuserName; ?}?}12:簡述什么是DAO模式,以及他解決的問題,應(yīng)用的環(huán)境,解決的方案,模式的本質(zhì)數(shù)據(jù)訪問對象?解決問題:根據(jù)數(shù)據(jù)源不同,數(shù)據(jù)訪問也不同。根據(jù)存儲的類型(關(guān)系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、純文獻(xiàn)等)和供應(yīng)商實現(xiàn)不同,持久性存儲(如數(shù)據(jù)庫)的訪問差別也很大。如何對存儲層以外的模塊屏蔽這些復(fù)雜性,以提供統(tǒng)一的調(diào)用存儲實現(xiàn)。程序的分布式問題解決方案:式將數(shù)據(jù)訪問邏輯抽象為特殊的資源,也就是說將系統(tǒng)資源的接口從其底層訪問機制中隔離出來;通過將數(shù)據(jù)訪問的調(diào)用打包,數(shù)據(jù)訪問對象可以促進(jìn)對于不同數(shù)據(jù)庫類型和模式的數(shù)據(jù)訪問。DAO的本質(zhì)就是一層屏蔽一種變化?本質(zhì):分層,是系統(tǒng)組件和數(shù)據(jù)源中間的適配器。(一層屏蔽一種變化)13:代碼示例:DAO模式的實現(xiàn)方法? publicinterfaceCustomerDAO{??publinsertCustomer(...); publicCollectionselectCustomersVO(...); }14:什么是開放-封閉法則(OCP)?可擴展但是不可以更改已有的模塊對擴展是開放的對修改是封閉15:什么是替換法則(LSP) 使用指向基類(超類)的引用的函數(shù),必須可以在不知道具體派生類(子類)對象類型的情況下使用16:如何綜合使用我們學(xué)過的設(shè)計模式來構(gòu)建合理的應(yīng)用程序結(jié)構(gòu)?是采用接口進(jìn)行隔離,然后同時暴露值對象和工廠類,假如是需要數(shù)據(jù)存儲的功能,又會通過DAO模式去與數(shù)據(jù)存儲層交互。17:構(gòu)建常用的合理的Java應(yīng)用包結(jié)構(gòu)Ui(表現(xiàn)層)??business--factory,ebi,ebo dao--factory,dao,impl六、awt1:什么是GUI中的容器?什么是GUI中的組件? 容器:是Component的一個抽象子類,它允許其他的組件被嵌套在里面,它可以容納組件或其他容器 組件:AWT提供的具有一定功能類,且?guī)ё约旱慕缑?,例如MenuBar、Button等2:簡述AWT中的Frame、Panel和組件的關(guān)系?組件直接添加在Panel上,而多個Panel可以疊加到Frame上,Frame一般只有一個,各個Panel可以互相在Frame上切換3:簡述如何使用一個組件初始化,加到容器中,注冊事件,實現(xiàn)相應(yīng)的事件?Panelpan=newPanel();?TextFieldtd=newTextField();?td.setText("thisisinaTextField.");?pan.add(td);4:描述一個GUI界面的基本構(gòu)成? Frame,Panel,組件 Popmenu6:如何控制外觀,如顏色、字體等? 可使用setColor(),setFont()方法?例如:?Framef=newFrame(); Fontfont=newFont("TimesRoman",F(xiàn)ont.PLAIN,14);?f.setColor(Color.red); f.setFont(f);7:什么是布局管理器? 用來管理GUI界面中組件的分布情況,負(fù)責(zé)決定布局方針以及其容器的每一個子組件的大小8:描述每種布局管理器的基本特點?FlowLayout從左到右分布,排滿推到下一行?BorderLayout上下左右中分布?CardLayout卡片式分布?GridLayout網(wǎng)格式分布 XYLayout坐標(biāo)分布四:swing1:什么是JFC(Java基礎(chǔ)類)? 是關(guān)于GUI組件和服務(wù)完整集合2:Swing和AWT的區(qū)別??Swing提供了更完整的組件,引入了許多新的特性和能力。SwingAPI是圍繞著實現(xiàn)AWT各個部分的API構(gòu)筑的。 AWT采用了與特定平臺相關(guān)的實現(xiàn),而絕大多數(shù)Swing組件卻不是這樣做的,因此Swing的外觀和感覺是可客戶化和可插的。3:什么是雙緩沖??在后臺進(jìn)行界面的更新,然后在前臺進(jìn)行界面互換 功能:雙緩沖可以改善一個被頻繁改變的組件的外觀4:描述GUI的事件機制?事件源:是一個事件得產(chǎn)生者,或產(chǎn)生事件的組件對象?事件監(jiān)聽器:調(diào)用事件解決方法的對象 事件解決器:就是一個接受事件、解釋事件并解決用戶交互的方法。5:描述Swing應(yīng)用程序的基本結(jié)構(gòu)? 組件定義?初始化界面 各種事件解決方法?各種適配類6:描述表現(xiàn)層的基本功能?展示數(shù)據(jù)人機交互收集參數(shù)、調(diào)用邏輯層api7:描述在開發(fā)Swing應(yīng)用程序中,一般都要寫那些代碼?都寫到什么地方?一般要在類的初始化的時候給組件賦值,寫在jinit的方法里面一般要在按扭的事件解決中寫收集參數(shù),組織參數(shù),調(diào)用業(yè)務(wù)接口的方法8:對于GUI組件而言,最重要的方法是哪些?初始化 如何給組件初始化?如何從組件中取值 設(shè)計組件的屬性9:如何學(xué)習(xí)GUI組件的用法? 重要學(xué)回組件的定義、取值、賦值的方法 類比學(xué)習(xí)五、JEE合用于創(chuàng)建服務(wù)器端的大型的軟件服務(wù)系統(tǒng)1.JEE:JAVAPLATFORMENTERPRISEDEDITON2.是一個規(guī)范集、技術(shù)集、框架集(API集)一種技術(shù)相應(yīng)一種或多種規(guī)范框架是可以完畢一定功能的半成品1.優(yōu)點:完畢一定的功能、提供一個經(jīng)良的應(yīng)用程序架構(gòu)2.框架都是以接口的形式出現(xiàn)3.應(yīng)當(dāng)了解框架完畢的功能、框架的API接口、框架的功能是怎么實現(xiàn)的3.C/SB/S模式a.C/Sclient/server客戶端也參與程序的運營與計算(富客戶端、瘦客戶端)b.B/Sborder/server4、公司級應(yīng)用(大規(guī)模的應(yīng)用)1.生命周期長、穩(wěn)定、可靠2.組件往往分布在異構(gòu)的環(huán)境中,可以跨平臺3.維護(hù)性、擴展性、重用性4.有事務(wù)、安全、線程5、業(yè)務(wù)邏輯劃分模塊是依照業(yè)務(wù)邏輯,所謂鑒定業(yè)務(wù)就是起具有以下特性:1.業(yè)務(wù)流程2.業(yè)務(wù)判斷6、平臺(角色)1.平臺供應(yīng)商。提供滿足API集實現(xiàn)的廠商(BEAwebloginIBMwebshphere)2.組件供應(yīng)商3.組件裝配人員4.部署人員5.系統(tǒng)管理人員6.工具供應(yīng)商提供開發(fā)組件所使用的工具(Jbuilder、eclipse)7、java技術(shù)分布(設(shè)計架構(gòu)模塊內(nèi)部設(shè)計)1.表現(xiàn)層Servlet、Jsp、JavaBean、Taglib2.邏輯層EJB(SessionBean)3.?dāng)?shù)據(jù)層(JDBCEJB(EntityBean))4.服務(wù)JTA(JAVA事務(wù)架構(gòu))JTS(JAVA事務(wù)服務(wù))JAAS(JAVA授權(quán)與驗證服務(wù))5.分布式通訊RMI(IIOP)+JNDI、JAXPJAVA的XML架構(gòu)JAVAMAIL(郵件服務(wù))、JMS(消息服務(wù))、IDLC、JCA(JAVA連接器框架(成))8、JEE的體系結(jié)構(gòu):是一種組件的體系結(jié)構(gòu)1.組件:可以完畢一定功能的封狀體(獨立的功能的集合)不能單獨運營必須運營在容器上web組件ejb組件2.體系結(jié)構(gòu):應(yīng)用組件之間的關(guān)系3.容器:提供組件的運營環(huán)境,并對組件進(jìn)行管理(一段程序)管理組件的生命后期不能單獨運營必須運營在服務(wù)器上程序通過上下文來調(diào)用容器(context)容器通過回調(diào)的方法來調(diào)用組件web容器ejb容器4.服務(wù)器:提供容器的運營環(huán)境,提供大量的JEE基礎(chǔ)服務(wù)web服務(wù)器(只提供web服務(wù))jee服務(wù)器(提供web、jee服務(wù))9、部署描述:(用xml來描述)組件向容器描述自己,使容器可以結(jié)識組件容器通過回調(diào)的方法來調(diào)用組件回調(diào):由程序?qū)崿F(xiàn)的方法,程序自己不調(diào),由容器自動調(diào)用的方法10、JAVA關(guān)于XML的APIJAXP(JavaAPIforxmlprasing)解析xml文獻(xiàn)以便讀寫JAXB(JavaAPIforxmlBinding)映射技術(shù)JAVA數(shù)據(jù)映射到xml文獻(xiàn)11、webservice:提供web服務(wù)(功能的重用同樣的功能只存在一份)機制如下:UDDI服務(wù)器UDDI服務(wù)器客戶端服務(wù)器注冊uddi,來展示自己的功能客戶端通過uddi來尋找自己想要的功能uddi返回信息給客戶端客戶端通過webservice來調(diào)用服務(wù)器的方法,在調(diào)用時封裝了RPC、RMI、JNDI(SOAP)調(diào)用是屏蔽了客戶端與服務(wù)器端的差異,通過統(tǒng)一的rmi來進(jìn)行通訊12、RMI遠(yuǎn)程方法的調(diào)用機制例如:A主機有B()方法,C主機有D()方法,A想調(diào)用C主機的D方法ARmi(參數(shù),C的ip,port)SARmi(參數(shù),C的ip,port)Stub(記錄調(diào)用的是C的D方法)Rmi解決網(wǎng)絡(luò)傳輸接受到C的返回值C6.5.返回給A4.得到返回值3.Rmi解決2.Seleket(記錄來自A的請求)1.接受到A的請求13、JAVA的體系結(jié)構(gòu)Io,Thread,net,Io,Thread,net,SwingApplet(可選)核心包Java.langjava.util語法14、學(xué)習(xí)方法1.規(guī)范(熟記)2.熟悉API3.多練4.多想六、servlet1:什么是B/S和C/SBrowser/Server瀏覽器/服務(wù)器(瘦客戶端)Custom/Server客戶端/服務(wù)器(胖客戶端)2:描述war包、jar包、ear包的結(jié)構(gòu) war- ?--myweb ? WEB-INF?? ?----web.xml ???lib ?-classes jar- --myjar? ?---META-INF ?-.MF ear-??--META-INF? ?Application.xml? --.war??--.jar3:什么是servlet?servlet重要做什么??網(wǎng)絡(luò)服務(wù)的請求和響應(yīng)方式 通過WEB瀏覽器調(diào)用servlet的方法,重要是在服務(wù)端寫動態(tài)代碼與服務(wù)器端交流;4:servlet與cgi相比的優(yōu)點?servlet的缺陷 優(yōu)點:? 性能(線程比進(jìn)程更快)??可伸縮? Java強健且面向?qū)ο??Java平臺獨立?缺陷:??解決代碼(業(yè)務(wù)邏輯)與HTML(表現(xiàn)邏輯)混合在一起5:常用的servlet包的名稱是??javax.servlet javax.servlet.http6:描述servlet接口的層次結(jié)構(gòu)??Servlet ?--genericServlet? --HttpServlet ? ?--自己的servlet?ServletRequest ServletResponse7:對比get方法和post方法??get方法:請求對服務(wù)器沒有負(fù)面影響,Form數(shù)據(jù)量小,數(shù)據(jù)的內(nèi)部應(yīng)在url中可見;明文傳輸,安全度低post方法:請求的數(shù)據(jù)過程改變服務(wù)器的狀態(tài),F(xiàn)orm數(shù)據(jù)量大,數(shù)據(jù)的內(nèi)部應(yīng)在url中不可見,安全度高;8:歸類描述HttpServletRequest接口都完畢那些功能 1.讀取和寫入HTTP頭標(biāo)2.取得和設(shè)立cookies3.取得途徑信息4.標(biāo)記HTTP會話。9:歸類描述HttpServletResponse接口都完畢那些功能 HttpServletResponse加入表達(dá)狀態(tài)碼、狀態(tài)信息和響應(yīng)頭標(biāo)的方法,它還負(fù)責(zé)對URL中寫入一Web頁面的HTTP會話ID進(jìn)行解碼。10:描述Service方法所完畢的基本功能?默認(rèn)是在那里實現(xiàn)的? service方法是在servlet生命周期中的服務(wù)期,根據(jù)HTTP請求方法(GET、POST等),將請求分發(fā)到doGet、doPost等方法?HttpServlet類實現(xiàn)11:如何開發(fā)自己的Servlet?描述應(yīng)當(dāng)做的環(huán)節(jié)和每步需要完畢的工作 1.引jar包1)構(gòu)建開發(fā)環(huán)境common包-->lib包-->servlet--->api.jar2.開發(fā)servlet類1)一方面繼承HttpServlet2)實現(xiàn)doGet()doPost()3)定義doGet()doPost()3.建個web應(yīng)用4.部署 安裝web容器,例如Tomcat 在Tomcat的webapps目錄下新建一個文獻(xiàn)夾作為web程序的根 在根下新建一個名為WEB-INF的文獻(xiàn)夾,里面建立一個web.xml的文獻(xiàn)、一個classes的文獻(xiàn)夾、一個lib文獻(xiàn)夾 按照servlet的DTD配置web.xml文獻(xiàn)?把編譯好的servlet的class文獻(xiàn)復(fù)制到classes目錄下 lib文獻(xiàn)存放程序所需要的jar包12:為什么servlet需要部署描述??servlet需要配置web.xml文獻(xiàn)來使容器結(jié)識servlet程序13:Servlet基本的描述應(yīng)當(dāng)是?請寫出來?<servlet> <servlet-name>Hello</servlet-name> <servlet-class>sl314.web.FormBasedHello</servlet-class> </servlet>?<servlet-mapping> <servlet-name>Hello</servlet-name>??<url-pattern>/greeting</url-pattern>?</servlet-mapping>14:如何在html中使用servlet FORM標(biāo)記? ACTION–指定form信息的目的地(相關(guān)的URL) ?METHOD–指定HTTP方法(GET或POST) 語法: <FORMACTION=’servlet-URL’METHOD=’{GET|POST}’> ?{HTMLformtagsandotherHTMLcontent}??</FORM>15:如何接受request中的參數(shù)?StringuserName=(String)request.getParameter("userName")方法16:如何接受request中header的值 request.getHeader(name);?request.getHeaders(names);等17:如何輸出html?PrintWriterpw=response.getWriter();?pw.write("<html>"); pw.write("Hello");?pw.write("</html>");18:如何設(shè)立輸出的contentType?response.getContentType()19:描述servlet的生命周期? 生命周期是指servlet實例在web容器中從:初次創(chuàng)建調(diào)用init方法開始初始化期,通過service方法運營期,一直到destory方法銷毀期?結(jié)束 servlet實例的生命周期由web容器來管理20:描述init,service,destroy方法的功能和特點 init方法:是在servlet實例創(chuàng)建時調(diào)用的方法,用于創(chuàng)建或打開任何與servlet相的資源和初始化servlet的狀態(tài)Servlet規(guī)范保證調(diào)用init方法前不會解決任何請求 service方法:是servlet真正解決客戶端傳過來的請求的方法,由web容器調(diào)用,根據(jù)HTTP請求方法(GET、POST等),將請求分發(fā)到doGet、doPost等方法destory方法:是在servlet實例被銷毀時有web容器調(diào)用。Servlet規(guī)范保證在destroy方法調(diào)用之前所有請求的解決均完畢需要覆蓋destroy方法的情況:釋放任何在init方法中打開的與servlet相關(guān)的資源存儲servlet的狀態(tài)21:什么是回調(diào)方法?有什么特點? 由容器來調(diào)用程序的方法 由容器來決定什么時候來調(diào)22:如何設(shè)立初始化servlet的參數(shù)? <init-param><param-name>greetingText</param-name><param-value>Hello</param-value></init-param>23:如何獲取servlet初始化的參數(shù) publicvoidinit(){greetingText=getInitParameter("greetingText");System.out.println(">>greetingText='"+greetingText+"'");?}24:ServletConfig接口默認(rèn)在那里實現(xiàn)的?GenericServlet類實現(xiàn)ServletConfig接口25:什么是ServletContext?有什么作用??Servlet上下文?ServletContext對象是Web應(yīng)用的運營時表達(dá),可通過其實現(xiàn)Web應(yīng)用中的資源共享26:如何訪問ServletContext接口?是在那里實現(xiàn)的? Servlet通過getServletContext()方法訪問 GenericServlet類實現(xiàn)27:ServletContext接口的功能涉及?分別用代碼示例?只讀初始化參數(shù): getInitParameter(name:String):String ? getInitParameterNames():Enumeration讀寫訪問應(yīng)用級屬性:getAttribute(name:String):Object??? ??setAttribute(name:String,value:Object)?? ? getAttributeNames():Enumeration?只讀訪問文獻(xiàn)資源:?getResource(pat(yī)h):URL? ? ?getResourceAsStream(path):InputStream?寫web應(yīng)用日記文獻(xiàn):log(message:String)?? ? log(message:String,Throwable:excp)28:如何設(shè)立Context的參數(shù)??<context-param>? <param-name>catalogFileName</param-name>??<param-value>/WEB-INF/catalog.txt</param-value> </context-param>29:如何獲?。茫飊text設(shè)立的參數(shù)值??ServletContextcontext=sce.getServletContext();StringcatalogFileName=context.getInitParameter(“catalogFileName”);30:描述Web應(yīng)用的生命周期? Web容器啟動時,初始化每個Web應(yīng)用?可以創(chuàng)建"監(jiān)聽器"對象觸發(fā)這些事件; Web容器關(guān)閉時,銷毀每個Web應(yīng)用31:如何用代碼實現(xiàn)監(jiān)控Web應(yīng)用的生命周

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論