Jsp的四大作用域與九大對象
轉載:https://www.cnblogs.com/mengzhen123/p/5968831.html
內置對象特點:
1. 由JSP規範提供,不用編寫者實例化。
2. 通過Web容器實現和管理
3. 所有JSP頁面均可使用
4. 只有在腳本元素的表達式或代碼段中才可使用(<%=使用內置對象%>或<%使用內置對象%>)
常用內置對象:
1. 輸出輸入對象:request對象、response對象、out對象
2. 通信控制對象:pageContext對象、session對象、application對象
3. Servlet對象:page對象、config對象
4. 錯誤處理對象:exception對象
Request(Javax.servlet.ServletRequest)它包含了有關瀏覽器請求的信息.通過該對象可以獲得請求中的頭信息、Cookie和請求參數。
Response(Javax.servlet.ServletResponse)作為JSP頁面處理結果返回給用戶的響應存儲在該對象中。並提供了設置響應內容、響應頭以及重定向的方法(如cookies,頭信息等)
Out(Javax.servlet.jsp.JspWriter)用於將內容寫入JSP頁面實例的輸出流中,提供了幾個方法使你能用於向瀏覽器回送輸出結果。
pageContext(Javax.servlet.jsp.PageContext)描述了當前JSP頁面的運行環境。可以返回JSP頁面的其他隱式對象及其屬性的訪問,另外,它還實現將控制權從當前頁面傳輸至其他頁面的方法。
Session(javax.servlet.http.HttpSession)會話對象存儲有關此會話的信息,也可以將屬性賦給一個會話,每個屬性都有名稱和值。會話對象主要用於存儲和檢索屬性值。
Application(javax.servle.ServletContext)存儲了運行JSP頁面的servlet以及在同一應用程序中的任何Web組件的上下文信息。
Page(Java.lang.Object)表示當前JSP頁面的servlet實例
Config(javax.servlet.ServletConfig)該對象用於存取servlet實例的初始化參數。
Exception(Javax.lang.Throwable)在某個頁面拋出異常時,將轉發至JSP錯誤頁面,提供此對象是為了在JSP中處理錯誤。只有在錯誤頁面中才可使用<%@page isErrorPage=“true”%>
Jsp內置對象 |
功能 |
主要方法 |
out |
向客戶端輸出數據 |
print() println() flush() clear() isAutoFlush() getBufferSize() close() ………… |
request |
向客戶端請求數據 |
getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() ………….. |
response |
封裝了jsp產生的響應,然後被發送到客戶端以響應客戶的請求 |
addCookie() sendRedirect() setContentType() flushBuffer() getBufferSize() getOutputStream() sendError() containsHeader()…………… |
application |
||
config |
表示Servlet的配置,當一個Servlet初始化時,容器把某些信息通過此對象傳遞給這個Servlet |
getServletContext() getServletName() getInitParameter() getInitParameterNames()…………… |
page |
Jsp實現類的實例,它是jsp本身,通過這個可以對它進行訪問 |
flush()……… |
pagecontext |
為JSP頁面包裝頁面的上下文。管理對屬於JSP中特殊可見部分中己經命名對象的該問 |
forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute() findAttribute() …………… |
session |
用來保存每個用戶的信息,以便跟蹤每個用戶的操作狀態 |
getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() invalidate() isNew() |
exception |
反映運行的異常 |
getMessage()…………
|
pageContext, request, session、application四個作用域中
1、如果把變量放到pageContext裏,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裏。 從把變量放到pageContext開始,到jsp頁面結束,你都可以使用這個變量。
2、如果把變量放到request裏,就說明它的作用域是request,它的有效範圍是當前請求周期。所謂請求周期,就是指從http請求發起,到服務器處理結束,返回響應的整個過程。在這個過 程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裏你都可以使用這個變量。 3、如果把變量放到session裏,就說明它的作用域是session,它的有效範圍是當前會話。所謂當前會話,就是指從用戶打開瀏覽器開始,到用戶關閉瀏覽器這中間的過程。這個過程可能包含多個請求響應。也就是說,只要用戶不關瀏覽器,服務器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變量,4、如果把變量放到application裏,就說明它的作用域是application,它的有效範圍是整個應用。整個應用是指從應用啟動,到應用結束。我們沒有說“從服務器啟動,到服務器關閉”是因為一個服務器可能部署多個應用,當然你關閉了服務器,就會把上面所有的應用都關閉了。application作用域裏的變量,它們的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用。與上述三個不同的是,application裏的變量可以被所有用戶共用。如果用戶甲的操作修改了application中的變量,用戶乙訪問時得到的是修改後的值。這在其他scope中都是不會發生的,page, request, session都是完全隔離的,無論如何修改都不會影響其他
Jsp的四大作用域與九大對象