堆棧(Stack)是一種常見的數(shù)據(jù)結(jié)構(gòu),它的特點是后進(jìn)先出(Last In First Out,LIFO)。堆棧類似于一個垂直的堆,數(shù)據(jù)元素只能從堆棧的頂部插入(稱為“入棧”),也只能從堆棧的頂部刪除(稱為“出棧”)。
堆棧中的插入和刪除操作只能在棧頂進(jìn)行,所以堆棧的插入和刪除操作都是O(1)的時間復(fù)雜度。堆棧的主要應(yīng)用包括:程序中的函數(shù)調(diào)用棧、表達(dá)式求值、內(nèi)存管理、回溯算法等等。
舉個例子,假設(shè)有一堆書需要從地上放到書架上,為了避免亂放,可以使用一個箱子作為堆棧,每次只能從箱子的頂部放入一本書,取書時也只能從箱子的頂部取書。這樣,
在 JSP 頁面中,有一些內(nèi)置對象可以直接使用,這些內(nèi)置對象可以為 JSP 開發(fā)提供非常有用的功能。以下是 JSP 內(nèi)置對象的列表:
request:代表客戶端發(fā)出的請求??梢允褂?request 對象獲取表單參數(shù)、HTTP 請求頭、客戶端 IP 等信息。
response:代表服務(wù)器對客戶端請求的響應(yīng)??梢允褂?response 對象設(shè)置響應(yīng)頭、發(fā)送響應(yīng)數(shù)據(jù)等。
session:代表用戶的會話,是一種客戶端狀態(tài)管理機(jī)制??梢允褂?session 對象存儲和獲取用戶的數(shù)據(jù)。
application:代表 Web 應(yīng)用程序本身,是一種全局性的狀態(tài)管理機(jī)制。可以使用 application 對象存儲和獲取應(yīng)用程序的數(shù)據(jù)。
out:代表輸出流對象,可以使用 out 對象向客戶端輸出文本或 HTML 等格式的數(shù)據(jù)。
pageContext:代表 JSP 頁面的上下文,是所有內(nèi)置對象的根對象,可以使用 pageContext 對象獲取其他內(nèi)置對象。
config:代表 Servlet 配置信息,可以使用 config 對象獲取 Servlet 初始化參數(shù)。
exception:代表 JSP 頁面的異常對象,可以使用 exception 對象獲取 JSP 頁面拋出的異常信息。
page:代表當(dāng)前 JSP 頁面本身,可以使用 page 對象獲取當(dāng)前頁面的 URL 等信息。
這些內(nèi)置對象可以直接在 JSP 頁面中使用,無需進(jìn)行初始化或創(chuàng)建??梢酝ㄟ^在 JSP 頁面中使用相應(yīng)的名稱來引用這些對象。例如,使用 request 對象獲取表單參數(shù)的代碼如下所示:
<%
String username = request.getParameter("username");
%>
還有一些其他的內(nèi)置對象,例如:
pageScope:代表 JSP 頁面的 PageContext 域,可以使用 pageScope 對象存儲和獲取頁面范圍內(nèi)的數(shù)據(jù)。
requestScope:代表 Request 域,可以使用 requestScope 對象存儲和獲取請求范圍內(nèi)的數(shù)據(jù)。
sessionScope:代表 Session 域,可以使用 sessionScope 對象存儲和獲取會話范圍內(nèi)的數(shù)據(jù)。
applicationScope:代表 Application 域,可以使用 applicationScope 對象存儲和獲取應(yīng)用程序范圍內(nèi)的數(shù)據(jù)。
param:代表請求參數(shù),可以使用 param 對象獲取請求參數(shù)的值。
paramValues:代表請求參數(shù)的數(shù)組,可以使用 paramValues 對象獲取請求參數(shù)的多個值。
header:代表 HTTP 請求頭,可以使用 header 對象獲取請求頭的值。
headerValues:代表 HTTP 請求頭的數(shù)組,可以使用 headerValues 對象獲取請求頭的多個值。
cookie:代表客戶端發(fā)送的 Cookie,可以使用 cookie 對象獲取 Cookie 的值。
initParam:代表 Servlet 初始化參數(shù),可以使用 initParam 對象獲取 Servlet 的初始化參數(shù)。
這些內(nèi)置對象都是由 JSP 容器自動創(chuàng)建和管理的,可以在 JSP 頁面中直接使用。使用內(nèi)置對象可以簡化 JSP 開發(fā),并且提高開發(fā)效率。
放入的最后一本書會被放在箱子的頂部,取書時也會先取出最后放入的書。這就是堆棧的基本原理。