標籤:堆棧 bsp 釋放 conf 複製 檔案 規範 move 字元
一、JSP內建對象
JSP根據Servlet API規範提供了一些內建對象,開發人員不用事先聲明就可使用標準變數來訪問這些對象。
JSP提供了9種內建對象:
(一)、request簡述:
JSP編程中最常用的對象,代表來自用戶端的請求,調用request對象相應的方法可以擷取關於客戶請求的資訊。
常見方法的用法樣本:
1 <font size=5> 2 <br>用戶端使用的協議是: 3 <% 4 String protocol = request.getProtocol(); 5 out.println(protocol); 6 %> 7 <br>擷取接收客戶提交資訊的頁面: 8 <% 9 String path = request.getServletPath();10 out.println(path);11 %>12 <br>擷取客戶提交資訊的長度:13 <%14 int length = request.getContentLength();15 out.println(length);16 %>17 <br>擷取HTTP標頭檔中User-Agent的值:18 <%19 String headerFirst = request.getHeader("User-Agent");20 out.println(headerFirst);21 %>22 <br>擷取HTTP標頭檔中accept的值:23 <%24 String headerSecond = request.getHeader("accept");25 out.println(headerSecond);26 %>27 <br>擷取HTTP標頭檔中Host的值:28 <%29 String headerThird = request.getHeader("Host");30 out.println(headerThird);31 %>32 <br>擷取HTTP標頭檔中accept-encoding的值:33 <%34 String headerFourth = request.getHeader("accept-encoding");35 out.println(headerFourth);36 %>37 <br>擷取客戶的IP地址:38 <%39 String IP = request.getRemoteAddr();40 out.println(IP);41 %>42 <br>擷取客戶機的名稱:43 <%44 String clientName = request.getRemoteHost();45 out.println(clientName);46 %>47 <br>擷取伺服器的名稱:48 <%49 String serverName = request.getServerName();50 out.println(serverName);51 %>52 <br>擷取伺服器的連接埠號碼:53 <%54 int serverPort = request.getServerPort();55 out.println(serverPort);56 %>57 </font>
(二)、response簡述:
該對象用於向用戶端發送資料,例如Cookie、HTTP檔案頭資訊等資料。
通過response對象組織發送到用戶端的資訊,但組織方式比較底層故不建議一般程式開發人員使用,一般需向用戶端發送文字資訊時直接用out對象。
常見方法的用法說明及樣本:
①、addCookie(Cookie cookie):向response對象添加一Cookie對象來儲存用戶端的使用者資訊,通過request對象的getCookies()方法擷取該Cookie。
1 Cookie cookie = new Cookie("name","dlut");2 response.addCookie(cookie);
②、addHeader(String name,String value):向response對象添加HTTP檔案頭,該標頭檔會傳到用戶端,若同名檔案頭存在則覆蓋原來的檔案頭。
③、containsHeader(String name):判斷response對象中指定名字的HTTP檔案頭是否存在。
④、sendError(int sc):向用戶端發送錯誤資訊。
⑤、setHeader(String name,String value):設定指定名字的HTTP檔案頭的值,若該值存在改值將被新值覆蓋。
1 eg:讓網頁每隔5秒重新整理一次2 response.setHeader("Refresh","5");
⑥、setContentType(String value):設定返回response對象的類型。
⑦、sendRedirect(String url):將請求重新定義到一個新的頁面。
(三)、out簡述:
out對象表示向用戶端發送資料的對象,通過該對象發送的內容將在瀏覽器上顯示,屬於文本。
out對象內部包含了一個緩衝區。
常用方法:
print()、println()、clear()、clearBuffer()、flush()、getBufferSize()及getRemaining()
(四)、session簡述:
會話(session)是同一個使用者發起的多個請求的集合,當使用者第一次向網站發送請求時,伺服器會建立一會話(session)對象,並為該對象分配一個唯一的會話ID,該會話ID作為每個請求的一部分傳遞,以此將使用者與會話對象匹配便於讓伺服器跨多個請求記住客戶機的狀態。
會話(session)中儲存和檢索的資訊必須是Java Object對象,而不是int等基礎資料型別 (Elementary Data Type)。
用法說明:
1.擷取會話(session)對象
通過調用HttpServletRequest的getSession()擷取當前請求的session對象。通常通過制定getSession()的參數為true使不存在現成的會話時自動建立一會話對象。
1 HttpSession session = request.getSession(true);
HttpSession對象生存與伺服器上,通過Cookie或URL這類後台機制自動關聯到請求的寄件者。
2.儲存與讀取屬性值
會話對象提供了一個內建的資料結構,該結構可以儲存任意數量的索引值對。
(1).儲存
通過調用session對象的setAttribute(String name,Object object)方法儲存屬性值。
(2).讀取
通過調用session對象的getAttribute(String name)方法讀取屬性值。
(五)、application簡述:
該對象代表運行在伺服器上的Web應用程式,相當於Servlet上下文。
該對象一旦建立後會一直保持下去直至伺服器關閉。
常見方法的用法說明:
方法名稱 |
方法說明 |
getAtteibute(String name) |
返回由name指定名字的application對象屬性的值,該值為一Object對象。 |
setAttribute(String name,Object object) |
用object初始化某個屬性,該屬性由name指定。 |
getAtteibuteNames() |
返回所有application對象屬性的名字,結果集是一Enumeration(枚舉)類的執行個體。 |
getInitParameter(String name) |
返回application初始化參數屬性值,屬性由name指定。 |
getServerInfo() |
獲得目前的版本Servlet編譯器的資訊。 |
getMimeType() |
擷取組件MIME的類型。 |
getRealPath() |
擷取組件在伺服器上的真實路徑。 |
(六)、config簡述:
config內建對象是ServletConfig類的一個執行個體,用於JSP引擎在Servlet初始化時,通過config向它(Servlet)傳遞資訊。這種資訊可以是屬性名稱/值匹配的參數,也可以是通過ServletContext對象傳遞的伺服器的有關資訊。一般在JSP開發中很少用到config內建對象,只有在編寫Servlet時若需要重載Servlet的init()方法時才會用到。
常用方法:
方法名稱 |
方法說明 |
getServletContext() |
返回 一個含有伺服器相關資訊的ServletContext對象。 |
getInitParameter(String name) |
返回初始化參數的值 |
getInitParameterNames() |
返回包含了Servlet初始化所需要的所有參數,傳回型別是枚舉型 |
(七)、pagecontext簡述:
pageContext內建對象是一個比較特殊的對象,它相當於頁面中所有其他對象功能的最大整合者,即使用它可以訪問到本頁面中所有其他的對象,例如前面已經描述的request、response、out和page對象等。由於在JSP中request和response等對象本來就可以通過直接調用方法使用,所以pageContext對象在實際JSP開發中很少使用到。
常用方法:
方法名稱 |
方法說明 |
getRequest() |
返回當前頁面中的request對象。 |
getResponse() |
返回當前頁面中的response對象。 |
getSession() |
返回當前頁面中的session對象。 |
getServletContext() |
返回當前頁面中的application對象。 |
getPage() |
返回當前頁面中的page對象。 |
getOut() |
返回當前頁面中的out對象。 |
getException() |
返回當前頁面中的exception對象。 |
getServletConfig() |
返回當前頁面中的config對象。 |
setAttribute(String name) |
給指定的屬性名稱設定屬性值。 |
getAttribute(String name) |
根據屬性名稱找到相應的屬性值。 |
setAttribute(String name, Object obj, int scope) |
在給定的範圍內設定相應的屬性值。 |
getAttribute(String name, int scope) |
在給的範圍內擷取相應的屬性值。 |
findAttribute(String name) |
尋找一個屬性並返回,如果尋找不到則返回null。 |
removeAttribute(String name) |
通過屬性名稱刪除掉某個屬性。 |
removeAttribute(String name, int scope) |
在指定的某個範圍裡刪除某個屬性。 |
getAttributeScope(String name,int scope) |
返回某屬性的範圍。 |
getAttributeNamesInScope(int scope) |
返回指定範圍內的所有屬性名稱的枚舉。 |
release() |
釋放pageContext佔據的所有資料。 |
forward(String relativeURLpath) |
使用當前頁面重導到另一個頁面。 |
include(String relativeURLpath) |
使用當前位置包含的另一個頁面。 |
(八)、page簡述:
page對象有點類似於Java編程中的this指標,就是指當前JSP頁面本身。page是java.lang.Object類的對象。page對象在實際開發過程中並不經常使用。
常用方法:
方法名稱 |
方法說明 |
getClass() |
返回當時Object的類。 |
hashCode() |
返回此時Object的雜湊碼。 |
toString() |
將此時的Object類轉換成字串。 |
equals(Object object) |
比較此對象是否與指定的對象相等。 |
copy(Object object) |
將此對象複製到指定的對象中。 |
clone() |
對此對象進行複製。 |
(九)、exception簡述:
該對象用來處理JSP檔案在執行時所有發生的錯誤及異常。
常用方法:
方法名稱 |
方法說明 |
getMessage() |
返回錯誤資訊。 |
printStackTrace() |
以標準錯誤形式輸出一個錯誤及錯誤的堆棧。 |
toString() |
以字串形式返回一個對異常的描述。 |
注意事項:(很重要)
必須在<%@page isErrorPage="true"%>的情況下才可以使用內嵌對象exception。
二、JSP內建對象對應類型及作用範圍
JSP內建對象 |
對應類型 |
作用範圍 |
request |
javax.servlet.servletRequest |
request |
response |
javax.servlet.servletResponse |
page |
session |
java.servlet.http.HttpSession |
session |
application |
java.servlet.servletContext |
application |
page |
java.lang.Object |
page |
out |
java.servlet.jsp.JspWrite |
page |
pagecontext |
java.servlet.jsp.PageContext |
page |
config |
java.servlet.servletConfig |
page |
exception |
java.lang.throwable |
page |
三、運算式語言
運算式語言(EL):與JSP指令碼相比,EL提供了一種更加簡便的產生動態Web頁面的方式。
Java EE JSP內建對象及運算式語言