IT兄弟連 JavaWeb教程 JSP內置對象經典面試題

  • 2019 年 10 月 5 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/ITXDL123/article/details/90089808

1.請說明cookie、request、session、application的作用域和聲明周期?

並說明它們適用與什麼場景?

request的生命周期是一次請求。可以用於JSP表單提交數據。

session會話可以設置它的超時時間,Tomcat中的默認時間為30分鐘,session對象的典型應用時用來對用戶的身份進行驗證,進而進行許可權設置。

cookie存放的載體在客戶端的瀏覽器中,生命周期默認時根據伺服器返回的Set-Cookie頭設置的,共兩大類:

會話cookie:瀏覽器一關閉就清除了。

有過期時間:超過設定的過期時間才會消失。

cookie能使用戶在不輸入用戶名和密碼的情況下進入曾經瀏覽過的一些站點。

application生命周期在整個應用程式中。開始於應用啟動,應用停止時被銷毀。application對象的最常見的應用時用來統計頁面的訪問人數或者是記錄網站的在線人數。

2.在JSP頁面中,能否獲得Servlet中request.setAttribute中的值,如果 能獲得,可以通過那種方式,如果不能,簡述為什麼?

Servlet通過轉發方式跳轉到JSP頁面,JSP頁面就可以獲得request中屬性的值。例如:

Servlet程式碼如下:

request.setAttribute("name","xdl");

request.getRequestDispatcher("/index.jsp").forward(request,response);

JSP程式碼如下:

<%=request.getAttribute("name") %>

3.JSP內置對象及方法

JSP有9個內置對象:request、response、out、session、pageContext、applicaton、config、page、exception。

(1)request表示javax.servlet.http.HttpServletRequest對象,用於獲取客戶端提供的數據,包括頭資訊、客戶端地址、請求方式等。主要方法如下:

1)getCookies():返回客戶端所有Cookies對象,結果是—個Cookies數組。

2)getSession():返回與請求相關的session。

3)setAttribute(String key,Object obj):設置屬性的屬性值。

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

5)request.getParameter(String name):獲得客戶端傳送給伺服器端的參數值。

6)getCharacterEncoding():返回字元編碼方式。

6)getContentType():得到請求體的MIME類型

(2)response表示javax.servlet.http.HttpServletResponse對象,用於對客戶端的請求作出動態的響應,向客戶端發送數據。主要方法有:

1)addCookie(Cookies c):添加—個Cookie對象,用來保存客戶端的用戶資訊。

2)sendRedirect(String location):把響應發送到另一個位置進行處理。

3)sendError(int):向客戶端發送錯誤的資訊。

4)getBufferSize():返回緩衝區的大小。

5)getOutputStream():返回客戶端的輸出流對象。

6)setContentType(String ContentType):設置相應的MIME類型。

7)setHeader(String name,String value):設置指定名字的HTTP文件頭的值如果已經存在則將覆蓋已經存在的值。

8)encodeURL(String url):使用sessionld封裝URL。如果沒有必要封裝URL,返回原值。

(3)out對象是javax.servlet.jsp.JspWriter的—個實例,用來向客戶端輸出各種數據。主要方法如下:

1)print()/println():根據參數類型輸出各種類型的數據。

2)flush():輸出緩衝區的數據。

3)close():關閉輸出流。

4)clear():清除緩衝區里的數據,但不會把數據輸出到客戶端。

5)getBufferSize():獲得緩衝區的大小。

6)clearBuffer():清除緩衝區里的數據,並把數據輸出到客戶端。

7)getRemaining():獲得緩衝區中沒有被佔用的空間的大小。

8)isAutoFlush():返回布爾值,如果AutoFlush為真,返回true:反之,返回false。

(4)pageContext表示—個javax.servlet.jsp.PageContext對象。它是用於方便存取所有範圍的名字空間的對象,並且包裝了通用的servlet相關功能的方法。主要方法如下:

1)getOut():返回當前客戶端響應被使用的JspWriter流(out)。

2)getSession():返回當前頁中的HttpSession對象(session).

3)getPage():返回當前頁的Obj ect對象(page)。

4)getRequest():返回當前頁的ServletRequest對象(request).

5)getResponse():返回當前頁的ServletResponse對象(response)。

6)getException():運回當前頁的Exception對象(exception)。

7)getServletConfig():返回當前頁的ServletConfig對象(config).

8)getServletContext():返回當前頁的ServletContext對象(application).

9)setAttribute(String name,Object attribute):設置屬性及屬性值。

10)getAttribute(String name,int scope):在指定範圍內取屬性的值。

11)removeAttribute(String name):刪除某屬性。

12)release():釋放pageContext所佔用的資源。

13)forward(String relativeUrIPath):使當前頁面重導到另一頁面。

14)include(String relativeUrIPath):在當前位置包含另一文件。

(5)session表示—個請求的javax.servlet.http.HttpSession對象。Session用來保存用戶的會話資訊和會話狀態。主要方法如下:

1)setAttribute(String name.Object obj):設置指定名字name的屬性值value,並存儲在session對象中。

2)getAttribute(String name):獲取與指定名字name相聯繫的屬性。

3)invaldate():取消SESSION,使SESSION不可用。

4)getld():返回SESSION創建時JSP引擎為它設的惟-ID號。

5)getCreationTime():返回SESSION創建時間。

6)getLastAccessedTime():返回此SESSION里客戶端最近一次請求時間。

7)getMaxlnactivelnterval():返回兩次請求間隔多長時間此SESSION被取消。

8)getValueNames():返回—個包含此Session中所有可用屬性的數組。

9)removeValue(String name):刪除Session中指定的屬性。

(6)application表示—個javax,servlet.ServletContext對象。用於用戶間的數據共享,可以存放全局變數。主要方法如下:

1)getAttribute(String name):返回給定名的屬性值。

2)getAttributeNames():返回所有可用屬性名的枚舉。

3)setAttribute(String name,Object obj):設定屬性的屬性值。

4)removeAttribute(String name):刪除—屬性及其屬性值。

5)getServetInfo():返回JSP(Servlet)引擎名及版本號。

6)getReaIPath(String path):返回—虛擬路徑的真實路徑。

7)getContext(String uripath):返回指定WebApplication的application對象。

8)getResource(String path):返回指定資源(文件及目錄)的URL路徑。

9)getRequestDispatcher(String uripath):返回指定資源的RequestDispatcher。

(7)config表示—個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。主要方法如下:

1)getServletContext():退回含有伺服器相關資訊的ServletContext對象。

2)getlnitParameter(String name):返回初始化參數的值。

3)getlnitParameterNames():返回Servlet初始化所需所有參數的權舉。

(8)page表示從該頁面產生的—個servlet實例,即this。

(9)exception用於處理JSP頁面發生的錯誤和異常。主要方法有:

1)getMessage():返回描述異常的消息。

2)toString():返回關於異常的簡短描述消息。

3)printStackTrace():顯示異常及其棧軌跡。

4)filllnStackTrace():重寫異常的執行棧軌跡。