1、說出Servlet的生命周期,并說出Servlet和CGI的區(qū)別?
答:Web容器加載Servlet并將其實例化后,Servlet生命周期開始,容器運行其init方法進行Servlet的初始化,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當服務器決定將實例銷毀的時候調(diào)用其destroy方法。與cgi的區(qū)別在于servlet處于服務器進程中,它通過多線程方式運行其service方法,一個實例可以服務于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,服務完成后就銷毀,所以效率上低于servlet。
2、Servlet的基本架構
publicclassServletNameextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}pblicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}
3、forward和redirect的區(qū)別?
答:forward是容器中控制權的轉(zhuǎn)向,是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。redirect就是服務端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新請求,所以session,request參數(shù)都可以獲取,并且從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隱藏實際的鏈接;在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務器上的資源,則必須使用sendRedirect()方法。
4、說出數(shù)據(jù)連接池的工作機制是什么?
答:J2EE服務器啟動時會建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接。客戶端程序需要連接時,池驅(qū)動程序會返回一個未使用的池連接并將其表記為忙。如果當前沒有空閑連接,池驅(qū)動程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當使用的池連接調(diào)用完成后,池驅(qū)動程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個連接。
5、JSP的內(nèi)置對象及方法?
答:request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲取cookie,header和session數(shù)據(jù)的有用的方法。response表示HttpServletResponse對象,并提供了幾個用于設置送回瀏覽器的響應的方法(如cookies,頭信息等)。out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出結(jié)果。pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關的對象的API,并且包裝了通用的servlet相關功能的方法。session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信息。application表示一個javax.servle.ServletContext對象。這有助于查找有關servlet引擎和servlet環(huán)境的信息。config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)。page表示從該頁面產(chǎn)生的一個servlet實例。
6、jsp有哪些動作?作用分別是什么?
答:JSP共有以下6種基本動作:
jsp:include:在頁面被請求的時候引入一個文件;
jsp:useBean:尋找或者實例化一個JavaBean。;
jsp:setProperty:設置JavaBean的屬性。;
jsp:getProperty:輸出某個JavaBean的屬性;
jsp:forward:把請求轉(zhuǎn)到一個新的頁面;
jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標記。
7、jsp有哪些內(nèi)置對象?作用分別是什么?
答:JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對應):
request:用戶端請求,此請求會包含來自GET/POST請求的參數(shù);
response:網(wǎng)頁傳回用戶端的回應;
pageContext:網(wǎng)頁的屬性是在這里管理;
session:與請求有關的會話期;
application:servlet正在執(zhí)行的內(nèi)容;
out:用來傳送回應的輸出;
config:servlet的構架部件;
page:JSP網(wǎng)頁本身;
exception:針對錯誤網(wǎng)頁,未捕捉的例外。
8、get和post的區(qū)別?
答:Form中的get和post方法,在數(shù)據(jù)傳輸過程中分別對應了HTTP協(xié)議中的GET和POST方法。二者主要區(qū)別如下:
1)Get是用來從服務器上獲得數(shù)據(jù),而Post是用來向服務器上傳遞數(shù)據(jù);
2)Get將表單中數(shù)據(jù)按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?”連接,而各個變量之間使用“&”連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對應的方式,傳遞到action所指向URL;
3)Get是不安全的,因為在傳輸過程,數(shù)據(jù)被放在請求的URL中;Post的所有操作對用戶來說都是不可見的;
4)Get傳輸?shù)臄?shù)據(jù)量小,這主要是因為受URL長度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用Post;
5)Get限制Form表單的數(shù)據(jù)集必須為ASCII字符,而Post支持整個ISO10646字符集;
6)Get是Form的默認方法。
以上就是天津卓眾教育java培訓機構的小編針對“經(jīng)典面試,Java web常見面試題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。
Java面試題