亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

JavaWeb(J2EE)面試題及答案

時間:2020-09-11 13:48:41 JAVA認(rèn)證 我要投稿

JavaWeb(J2EE)面試題及答案

  1、JSP如何處理運(yùn)行時異常(run-time)exceptions?

JavaWeb(J2EE)面試題及答案

  可以使用頁面的errorPage屬性捕獲沒有處理的運(yùn)行時異常,然后自動轉(zhuǎn)向到一個錯誤處理頁面,代碼如下:

  如果在頁面請求時出現(xiàn)運(yùn)行時異常是,以上代碼會把頁面轉(zhuǎn)向到JSP頁面error.jsp,在error.jsp里面,可以通過以下代碼定義這個頁面是錯誤處理頁:

  < %@ page isErrorPage=”true” %>

  這樣描述錯誤信息的Throwable對象就可以在error.jsp頁面里面訪問到。

  2、JSP頁面是如何被執(zhí)行的?JSP執(zhí)行效率比Servlet低嗎?

  當(dāng)客戶端向一個JSP頁面發(fā)出請求時,Web Container將JSP轉(zhuǎn)化成Servlet的源代碼(只在第一次請求時),然后編譯轉(zhuǎn)化后的Servlet并加載到內(nèi)存中執(zhí)行,執(zhí)行的結(jié)果Response到客戶端。

  JSP只在第一次執(zhí)行的時候會轉(zhuǎn)化為Servlet,以后每次執(zhí)行Web容器都是直接執(zhí)行編譯后的Servlet,所以JSP和Servlet只是在第一次執(zhí)行的時候不一樣,JSP慢一點(diǎn),以后的執(zhí)行都是相同的。

  3、如果jsp表單元素的值為空,如何避免null出現(xiàn)在頁面上?

  可以寫一個簡單的函數(shù)對空值進(jìn)行處理,判斷值是否為空,如果是空就返回空字符串。實(shí)例代碼如下:

  < %! String blanknull(String s){ return (s == null) ? “” : s; } %>

  在你的JSP里面,可以使用以上函數(shù)輸出文本框或者其他頁面元素的值,實(shí)例代碼如下:

  4、如何避免JSP頁面自動生成session對象?為什么要這么做?

  在默認(rèn)情況下,在對一個JSP頁面發(fā)出請求時,如果session還沒有建立,JSP頁面會自動為請求建立一個session對象,但是session是比較消耗資源的,如果沒必要保持和使用session,就不應(yīng)該創(chuàng)建session, 例如一些只是用來宣傳產(chǎn)品的網(wǎng)站,往往沒必要使用session來保存信息,可以使用jsp頁面指令session=”false”來避免JSP頁面為每個請求都自動創(chuàng)建session.實(shí)例代碼如下:

  < %@ page session=”false”>

  5、在servlets和JSP之間能共享session對象嗎?

  當(dāng)然可以,

  HttpSession session = request.getSession(true);

  session.putValue(”variable”,”value”);

  6、Servlet都有哪些方法?主要作用是什么?

  HttpServlet 類包含 init() 、 destroy() 、 service() 等方法。其中 init() 和 destroy() 方法是繼承的。

  (1) init() 方法

  在 Servlet 的生命期中,僅執(zhí)行一次 init() 方法。它是在服務(wù)器裝入 Servlet 時執(zhí)行的。 可以配置服務(wù)器,以在啟動服務(wù)器或客戶機(jī)首次訪問 Servlet 時裝入 Servlet 。 無論有多少客戶機(jī)訪問 Servlet ,都不會重復(fù)執(zhí)行 init() 。

  缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法來覆蓋它,典型的是管理服務(wù)器端資源。 例如,可能編寫一個定制 init() 來只用于一次裝入 GIF 圖像,改進(jìn) Servlet 返回 GIF 圖像和含有多個客戶機(jī)請求的性能。另一個示例是初始化數(shù)據(jù)庫連接。缺省的 init() 方法設(shè)置了 Servlet 的初始化參數(shù),并用它的 ServletConfig 對象參數(shù)來啟動配置, 因此所有覆蓋 init() 方法的Servlet 應(yīng)調(diào)用 super.init() 以確保仍然執(zhí)行這些任務(wù)。在調(diào)用 service() 方法之前,應(yīng)確保已完成了 init() 方法。

  (2) service() 方法

  service() 方法是 Servlet 的核心。每當(dāng)一個客戶請求一個 HttpServlet 對象,該對象的 service() 方法就要被調(diào)用,而且傳遞給這個方法一個“請求”( ServletRequest )對象和一個“響應(yīng)”( ServletResponse )對象作為參數(shù)。 在 HttpServlet 中已存在 service() 方法。缺省的服務(wù)功能是調(diào)用與 HTTP 請求的方法相應(yīng)的 do 功能。例如, 如果 HTTP 請求方法為 GET ,則缺省情況下就調(diào)用doGet() 。 Servlet 應(yīng)該為 Servlet 支持的 HTTP 方法覆蓋 do 功能。因?yàn)?HttpServlet.service() 方法會檢查請求方法是否調(diào)用了適當(dāng)?shù)奶幚矸椒,不必要覆蓋 service() 方法。只需覆蓋相應(yīng)的 do 方法就可以了。

  = 當(dāng)一個客戶通過 HTML 表單發(fā)出一個 HTTP POST 請求時, doPost ()方法被調(diào)用。 與 POST 請求相關(guān)的參數(shù)作為一個單獨(dú)的 HTTP請求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時,應(yīng)該使用 doPost() 方法。

  = 當(dāng)一個客戶通過 HTML 表單發(fā)出一個 HTTP GET 請求或直接請求一個 URL 時, doGet() 方法被調(diào)用。 與 GET 請求相關(guān)的參數(shù)添加到 URL 的后面,并與這個請求一起發(fā)送。當(dāng)不會修改服務(wù)器端的數(shù)據(jù)時,應(yīng)該使用 doGet() 方法。

  Servlet 的響應(yīng)可以是下列幾種類型:

  一個輸出流,瀏覽器根據(jù)它的內(nèi)容類型(如 text/HTML )進(jìn)行解釋。

  一個 HTTP 錯誤響應(yīng) , 重定向到另一個 URL 、 servlet 、 JSP 。

  (3) destroy() 方法

  destroy() 方法僅執(zhí)行一次,即在服務(wù)器停止且卸裝 Servlet 時執(zhí)行該方法。典型的,將 Servlet 作為服務(wù)器進(jìn)程的一部分來關(guān)閉。缺省的 destroy() 方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務(wù)器端資源。例如,如果 Servlet 在運(yùn)行時會累計統(tǒng)計數(shù)據(jù),則可以編寫一個 destroy() 方法,該方法用于在未裝入 Servlet 時將統(tǒng)計數(shù)字保存在文件中。另一個示例是關(guān)閉數(shù)據(jù)庫連接。

  當(dāng)服務(wù)器卸裝 Servlet 時,將在所有 service() 方法調(diào)用完成后,或在指定的時間間隔過后調(diào)用 destroy() 方法。一個 Servlet 在運(yùn)行 service() 方法時可能會產(chǎn)生其它的線程,因此請確認(rèn)在調(diào)用 destroy() 方法時,這些線程已終止或完成。

  (4) GetServletConfig()方法

  GetServletConfig ()方法返回一個 ServletConfig 對象,該對象用來返回初始化參數(shù)和 ServletContext 。 ServletContext 接口提供有關(guān) servlet 的環(huán)境信息。

  (5) GetServletInfo()方法

  GetServletInfo ()方法是一個可選的方法,它提供有關(guān) servlet 的信息,如作者、版本、版權(quán)。

  當(dāng)服務(wù)器調(diào)用 sevlet 的 Service ()、 doGet ()和 doPost ()這三個方法時,均需要 “請求”和“響應(yīng)”對象作為參數(shù)。“請求”對象提供有關(guān)請求的`信息,而“響應(yīng)”對象提供了一個將響應(yīng)信息返回給瀏覽器的一個通信途徑。 javax.servlet 軟件包中的相關(guān)類為 ServletResponse 和 ServletRequest ,而 javax.servlet.http 軟件包中的相關(guān)類為 HttpServletRequest 和 HttpServletResponse 。 Servlet 通過這些對象與服務(wù)器通信并最終與客戶機(jī)通信。 Servlet 能通過調(diào)用“請求”對象的方法獲知客戶機(jī)環(huán)境,服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息。 Servlet 可以調(diào)用“響應(yīng)”對象的方法發(fā)送響應(yīng),該響應(yīng)是準(zhǔn)備發(fā)回客戶機(jī)的。

  7、Java Servlet的主要功能和作用是什么?

  Servlet 通過創(chuàng)建一個框架來擴(kuò)展服務(wù)器的能力,以提供在 Web 上進(jìn)行請求和響應(yīng)服務(wù)。當(dāng)客戶機(jī)發(fā)送請求至服務(wù)器時,服務(wù)器可以將請求信息發(fā)送給 Servlet ,并讓 Servlet 建立起服務(wù)器返回給客戶機(jī)的響應(yīng)。 當(dāng)啟動 Web 服務(wù)器或客戶機(jī)第一次請求服務(wù)時,可以自動裝入 Servlet 。裝入后, Servlet 繼續(xù)運(yùn)行直到其它客戶機(jī)發(fā)出請求。 Servlet 的功能涉及范圍很廣。例如, Servlet 可完成如下功能:

  (1) 創(chuàng)建并返回一個包含基于客戶請求性質(zhì)的動態(tài)內(nèi)容的完整的 HTML 頁面。

  (2) 創(chuàng)建可嵌入到現(xiàn)有 HTML 頁面中的一部分 HTML 頁面( HTML 片段)。

  (3) 與其它服務(wù)器資源(包括數(shù)據(jù)庫和基于 Java 的應(yīng)用程序)進(jìn)行通信。

  (4) 用多個客戶機(jī)處理連接,接收多個客戶機(jī)的輸入,并將結(jié)果廣播到多個客戶機(jī)上。例如, Servlet 可

  以是多參與者的游戲服務(wù)器。

  (5) 當(dāng)允許在單連接方式下傳送數(shù)據(jù)的情況下,在瀏覽器上打開服務(wù)器至 applet 的新連接,并將該連

  接保持在打開狀態(tài)。當(dāng)允許客戶機(jī)和服務(wù)器簡單、高效地執(zhí)行會話的情況下, applet 也可以啟動客戶瀏覽器和服務(wù)器之間的連接?梢酝ㄟ^定制協(xié)議或標(biāo)準(zhǔn)(如 IIOP )進(jìn)行通信。

  (6) 對特殊的處理采用 MIME 類型過濾數(shù)據(jù),例如圖像轉(zhuǎn)換和服務(wù)器端包括( SSI )。

  (7) 將定制的處理提供給所有服務(wù)器的標(biāo)準(zhǔn)例行程序。例如, Servlet 可以修改如何認(rèn)證用戶。

  8、Request對象的主要方法有哪些?

  setAttribute(String name,Object):設(shè)置名字為name的request的參數(shù)值

  getAttribute(String name):返回由name指定的屬性值

  getAttributeNames():返回request對象所有屬性的名字集合,結(jié)果是一個枚舉的實(shí)例

  getCookies():返回客戶端的所有Cookie對象,結(jié)果是一個Cookie數(shù)組

  getCharacterEncoding():返回請求中的字符編碼方式

  getContentLength():返回請求的Body的長度

  實(shí)例

  getInputStream():返回請求的輸入流,用于獲得請求中的數(shù)據(jù)

  getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法

  getParameter(String name):獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值

  getParameterNames():獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個枚舉的實(shí)例

  getParameterValues(String name):獲得有name指定的參數(shù)的所有值

  getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱

  getQueryString():獲得查詢字符串

  getRequestURI():獲取發(fā)出請求字符串的客戶端地址

  getRemoteAddr():獲取客戶端的IP地址

  getRemoteHost():獲取客戶端的名字

  getSession([Boolean create]):返回和請求相關(guān)Session

  getServerName():獲取服務(wù)器的名字

  getServletPath():獲取客戶端所請求的腳本文件的路徑

  getServerPort():獲取服務(wù)器的端口號

  removeAttribute(String name):刪除請求中的一個屬性

  9、使用JSP連接到數(shù)據(jù)庫連接緩沖池的最好方法是什么?

  1.使用JDBC2。0中帶有此服務(wù)的Driver

  2.使用提供有此服務(wù)的Application server

  3.自己寫

  10、在JSP中如何寫文本文件?

  使用PrintWriter對象,如:

  < %@ page import=”java.io.*” %>

  < % String str = “print me”; String nameOfTextFile = “/usr/anil/imp.txt”; try { PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile)); pw.println(str); pw.close(); } catch(IOException e) { out.println(e.getMessage()); } %>

  11、JSP的缺點(diǎn)?

  1.對JAVA程序進(jìn)行調(diào)試沒有好東東

  2.因大多數(shù)的servlet引擎不支持connection pooling

  3.Servlet引擎沒有標(biāo)準(zhǔn)

  4.JSP與其它腳本語言的交互

  12、在JSP中如何刪除一個COOKIE?

  < % Cookie killMyCookie = new Cookie(”mycookie”, null); killMyCookie.setMaxAge(0); killMyCookie.setPath(”/”); response.addCookie(killMyCookie); %>

  13、如何現(xiàn)實(shí)servlet的單線程模式?

  < %@ page isThreadSafe=”false”%>

  14、說出Servlet和CGI的區(qū)別?

  與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過多線程方式運(yùn)行其service方法,一個實(shí)例可以服務(wù)于多個請求,并且其實(shí)例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。

  15、Servlet的生命周期?

  Servlet是一種可以 在Servlet容器中運(yùn)行的組件,那么理所當(dāng)然就應(yīng)該有一個從創(chuàng)建到銷毀的過程,這個過程我們可以稱之為Servlet生命周期。Servlet的生命 周期可以分為加載、實(shí)例化、初始化、處理客戶請求和卸載五個階段,體現(xiàn)在方法上主要是init()、service()和destroy()三個方法。生 命周期的具體說明如下:

  Servlet容器完成加載Servlet類和實(shí)例化一個Servlet對象

  init()方法完成初始化工作,該方法由Servlet容器調(diào)用完成

  service()方法處理客戶端請求,并返回響應(yīng)結(jié)果

  destroy()方法在Servlet容器卸載Servlet之前被調(diào)用,釋放一些資源

  16、介紹一下javax.servlet.Servlet接口及其主要方法?

  Servlet接口的主要作用是提供Servlet生命周期的init()、service()和destroy()方法。

  servlet接口中的主要方法有:

  void init(ServletConfit config)throws ServletException

  在servlet被載入后和實(shí)施服務(wù)前由servlet引擎進(jìn)行一次性調(diào)用。如果init()產(chǎn)生溢出UnavailableException,則 servle退出服務(wù)。

  ServletConfig getServletConfig()

  返回傳遞到servlet的init()方法的ServletConfig對象

  void service(ServletRequest request, ServletResponse response)throws ServletException,IOException

  處理request對象中描述的請求,使用response對象返回請求結(jié)果

  String getServletInfo()

  返回描述servlet的一個字符串

  void destory()

  當(dāng)servlet將要卸載時由servlet引擎調(diào)用,銷毀Servlet實(shí)例。

  17、HttpServlet類中的主要方法都有哪些?各自的作用是什么?

  HttpServlet的主要方法有 doGet, doPost, doPut, doDelete, doTrace等等

  Void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  由servlet引擎調(diào)用用處理一個HTTP GET請求。輸入?yún)?shù)、HTTP頭標(biāo)和輸入流可從request對象、response頭標(biāo)和response對象的輸出流中獲得。

  Void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  由servlet引擎調(diào)用用處理一個HTTP POST請求。輸入?yún)?shù)、HTTP頭標(biāo)和輸入流可從request對象、response頭標(biāo)和response對象的輸出流中獲得。

  Void doPut(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  由servlet引擎調(diào)用用處理一個HTTP PUT請求。本方法中請求URI指出被載入的文件位置。

  Void doDelete(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  由servlet引擎調(diào)用用處理一個HTTP DELETE請求。請求URI指出資源被刪除。

  Void doOptions(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  由servlet引擎調(diào)用用處理一個HTTP OPTIONS請求。返回一個Allow響應(yīng)頭標(biāo)表明此servlet支持的HTTP方法。一個servlet不需要覆蓋此方法,因?yàn)?HttpServlet方法已經(jīng)實(shí)現(xiàn)規(guī)范所需的功能。

  Void doTrace(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  由servlet引擎調(diào)用用處理一個HTTP TRACE請求。使得請求頭標(biāo)被反饋成響應(yīng)關(guān)標(biāo)。一個servlet不需要覆蓋此方法,因?yàn)镠ttpServlet方法已經(jīng)實(shí)現(xiàn)HTTP規(guī)范所需的功能。

  Void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

  Service(Request request,Response response)調(diào)用的一個立即方法,帶有指定HTTP請求和響應(yīng)。此方法實(shí)際上將請求導(dǎo)向doGet()、doPost()等等。不應(yīng)該覆蓋此方法。

  Void service(Request request,Response response)throws ServletException,IOException

  將請求和響應(yīng)對象置入其指定的HTTP子類,并調(diào)用指定HTTP的service()方法。

  18、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式?

  a: 兩種形式 dtd schema,

  b: 本質(zhì)區(qū)別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發(fā)展schema的根本目的)。

  c:有DOM,SAX,STAX等

  DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個文檔裝入內(nèi)存,適合對XML的隨機(jī)訪問;SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)

  簽開頭與標(biāo)簽結(jié)束時,它會觸發(fā)一個事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問

  STAX:Streaming API for XML (StAX)

  19、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?

  用到了數(shù)據(jù)存儲,信息配置兩方面。在做數(shù)據(jù)交換平臺時,將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML文件壓縮打包加密后通過網(wǎng)絡(luò)傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理。在做軟件配置時,利用XML可以很方便的進(jìn)行,軟件的各種配置參數(shù)都存儲在XML文件中。

【JavaWeb(J2EE)面試題及答案】相關(guān)文章:

常見的JavaWeb(J2EE)面試試題及答案09-17

J2EE面試題及答案「精選」09-25

J2EE筆試面試題及答案09-17

J2EE英文面試題及答案09-05

J2EE經(jīng)典面試題及答案11-05

javaweb開發(fā)和j2ee區(qū)別06-04

2016年J2EE面試題及答案「精選」09-28

2016年最新J2EE面試題及答案09-25

關(guān)于J2EE MVC方面的面試題及答案09-25