【JSP進階】JSP九大內建物件,這你也不知道?

大耳朵胡蘆娃發表於2022-03-09

前言

之前我們已經學習了JSP的基礎了,今天我們繼續來學習JSP九大內建物件,這也是JSP的重點部分,同時也是面試的重點,大家在看完之後一定要自己動手練習。同時JSP基礎不知道的可以去看往期內容在回來繼續。


傳送門:【JSP入門】只知道HTML卻不知道JSP?


接下來正式來學習JSP九大內建物件吧!

目錄

前言

初識內建物件

深析九大內建物件

JSP案例演示

獲取其他內建物件

結語

初識內建物件

所謂內建物件就是在JSP中無需建立就可以直接使用的九個物件


這九大內建物件分別是:

(1)out(JspWriter):等同與response.getWriter(),用來向客戶端傳送文字資料;

(2)config(ServletConfig):對應“真身”中的ServletConfig;

(3)page(當前JSP的真身型別):當前JSP頁面的“this”,即當前物件;

(4)pageContext(PageContext):頁面上下文物件,它是最後一個沒講的域物件;

(5)exception(Throwable):只有在錯誤頁面中可以使用這個物件;

(6)request(HttpServletRequest):即HttpServletRequest類的物件;

(7)response(HttpServletResponse):即HttpServletResponse類的物件;

(8)application(ServletContext):即ServletContext類的物件;

(9)session(HttpSession):即HttpSession類的物件,不是每個JSP頁面中都可以使用,如果在某個JSP頁面中設定<%@pagesession=”false”%>,說明這個頁面不能使用session。


雖然內建物件是重點,但是不是所有的內建物件都很常用。


基本不會使用的內建物件:config、page、exception。


有兩個物件不是每個JSP頁面都可以使用的:exception、session。


深析九大內建物件

1、request物件


request 物件是 javax.servlet.httpServletRequest型別的物件。 該物件代表了客戶端的請求資訊,主要用於接受通過HTTP協議傳送到伺服器的資料。(包括頭資訊、系統資訊、請求方式以及請求引數等)。request物件的作用域為一次請求。


2、response物件


response 代表的是對客戶端的響應,主要是將JSP容器處理過的物件傳回到客戶端。response物件也具有作用域,它只在JSP頁面內有效。


3、session物件


session 物件是由伺服器自動建立的與使用者請求相關的物件。伺服器為每個使用者都生成一個session物件,用於儲存該使用者的資訊,跟蹤使用者的操作狀態。session物件內部使用Map類來儲存資料,因此儲存資料的格式為 "Key/value"。 session物件的value可以使複雜的物件型別,而不僅僅侷限於字串型別。


4、application物件


application 物件可將資訊儲存在伺服器中,直到伺服器關閉,否則application物件中儲存的資訊會在整個應用中都有效。與session物件相比,application物件生命週期更長,類似於系統的“全域性變數”。


5、out 物件


out 物件用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。在使用 out 物件輸出資料時,可以對資料緩衝區進行操作,及時清除緩衝區中的殘餘資料,為其他的輸出讓出緩衝空間。待資料輸出完畢後,要及時關閉輸出流。


6、pageContext 物件


pageContext 物件的作用是取得任何範圍的引數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等物件。pageContext物件的建立和初始化都是由容器來完成的,在JSP頁面中可以直接使用pageContext物件。


7、config 物件


config 物件的主要作用是取得伺服器的配置資訊。通過 pageConext物件的 getServletConfig() 方法可以獲取一個config物件。當一個Servlet 初始化時,容器把某些資訊通過 config物件傳遞給這個 Servlet。 開發者可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化引數。


8、page 物件


page 物件代表JSP本身,只有在JSP頁面內才是合法的。 page隱含物件本質上包含當前 Servlet介面引用的變數,類似於Java程式設計中的 this 指標。


9、exception 物件


exception 物件的作用是顯示異常資訊,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該物件將無法編譯JSP檔案。excepation物件和Java的所有物件一樣,都具有系統提供的繼承結構。exception 物件幾乎定義了所有異常情況。


在Java程式中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 物件,並把 exception 物件傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 物件。


JSP九大內建物件分為四類:


(1)輸入輸出物件:out物件、response物件、request物件

(2)通訊控制物件:pageContext物件、session物件、application物件

(3)Servlet物件: page物件、config物件

(4)錯誤處理物件:exception物件


JSP案例演示

老規矩我們寫一個簡單的JSP來演示一下常用的內建物件的用法。


<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Insert title here</title>

</head>

<body>

<%

String url = request.getRequestURL().toString();//HttpServletRequest物件

response.getWriter().println(url);//HttpServletResponse物件

%>

<%

out.println("<br>ABCCC");//等同於response.getWriter()

session.setAttribute("user", "張三");//HttpSession類的物件

out.println((String)session.getAttribute("user"));

%>

<%

String cp = application.getInitParameter("copyright");//ServletContext

out.println("<hr/>");

out.println(cp);

%>

<%

//通過使用pageContext獲取其他物件

pageContext.getRequest();

pageContext.getResponse();

pageContext.getSession();

pageContext.getServletContext();

%>

</body>

</html>


根據輸出的頁面鑽研一下對應關係。


JSP四大域:


Servlet中有三大域,而JSP中有四大域:


ServletContext:整個應用程式。

session:整個會話(一個會話中只有一個使用者)。

request:一個請求鏈。

pageContext:一個jsp頁面,這個域是在當前jsp頁面和當前jsp頁面中使用的標籤之間共享資料。


其有效期分別為:


(1)application(ServletContext):在整個伺服器上儲存,所有使用者都可使用。 重啟伺服器後無效。

(2)session:再一次會話中有效。伺服器跳轉、客戶端跳轉都有效。 網頁關閉重新開啟無效。

(3)request:只在一次請求中有效,伺服器跳轉之後有效。 客戶端跳無效。

(4)page(pageContext):只在一個頁面中儲存屬性。 跳轉之後無效。


獲取其他內建物件

一個pageContext物件等於所有內建物件,即1個當9個。這是因為可以使用pageContext物件獲取其它8個內建物件:


(1)JspWriter getOut():獲取out內建物件;

(2)ServletConfig getServletConfig():獲取config內建物件;

(3) Object getPage():獲取page內建物件;

(4)ServletRequest getRequest():獲取request內建物件;

(5)ServletResponse getResponse():獲取response內建物件;

(6) HttpSession getSession():獲取session內建物件;

(7)ServletContext getServletContext():獲取application內建物件;

(8)Exception getException():獲取exception內建物件;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014874/viewspace-2868528/,如需轉載,請註明出處,否則將追究法律責任。

相關文章