JSP內置對象

1. out 對象

out對象用於向Web遊覽器輸出信息,並管理應用服務器上的輸出緩沖區。

1.1 輸出信息

<%
out.print("hello");
out.println("world"); //換行效果隻在源碼中看的出,網頁反映不出。如果想讓其顯示,需要輸出的文本使用HTML的
標記括起來。 %>

1.2 管理響應緩沖

方法 說明
clear() 清楚緩沖區的內容(如果之前使用過flush(),該方法會拋出異常)
clearBuffer() 清除當前緩沖區中的內容,即使內容已提交客戶端,也能夠訪問該方法
flush() 刷新流(手工將緩沖區的數據輸出遊覽器)
isAutoFlush() 檢測當前緩沖區已滿時是自動清空,還是拋出異常
getBufferSize() 獲取緩沖區大小
getRemaining() 獲取緩沖區剩餘的字節數目

2. request 對象

2.1 獲取客戶端信息

方法 說明
getHeader(String name) 獲取http協議定義的頭文件信息
getHeaders(String name) 返回指定名字的request Headers的所有值,其結果是一個枚舉型的實例
getHeadersNames() 返回所有request Headers的名字,其結果是一個枚舉的實例
getMethod() 獲取客戶端向服務器端傳送數據的方法,如:get,post,header,trace等
getProtocol() 獲得客戶端向服務器端傳送數據所依據的協議名稱
getRequestURI() 獲得發出請求字符串的客戶端地址,不包括請求的參數
getRequestURL() 獲得發出請求的字符串的客戶端地址
getRealPath() 返回當前請求文件的絕對路徑
getRemoteAddr() 獲取客戶端的ip地址
getRemoteHost() 獲取客戶端的主機名
getServerName() 獲取服務器的名字
getServerPath() 獲取客戶端所請求的腳本文件的文件路徑
getServerPort() 獲取服務器的端口號

2.2 訪問請求參數

request對象用於處理http請求中的各項參數。在這些參數中,最常用的是獲取訪問請求參數。

register.jsp:
<%
request.getParameter("name");
request.getParameter("pwd");
%>

Notice: request 沒有 setParameter()方法

2.3 在作用域中管理屬性

在進行請求轉發時,需要把一些數據傳遞到轉發後的頁面進行處理。這時,就需要使用request對象的setAttribute()方法將數據保存到request范圍內的變量中。

request.setAttribute(String name, Object object);
request.getAttribute(String name); //返回object對象

2.4 解決中文亂碼

如果request的傳參是中文,在顯示這個參數時會變成亂碼。因為所有的request請求都是ISO-8859-1,而在頁面采用的是UTF-8的編碼方式。要解決此問題,需要用指定編碼類型重新構造一個String對象。

<%=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")%>

2.5 顯示國際化信息

遊覽器可以通過accept-language的HTTP報頭向Web服務器指明它所使用的本地語言,request對象中的getLocale()和getLocales()方法允許JSP開發人員獲取這一信息。

<%
java.util.Locale locale = request.getLocale();
String str = "";
if(locale.equals(java.util.Locale.US)){
    str = "hello";
}else if(locale.equals(java.util.Locale.CHINA)){
    str = "你好";
}
<%=str%>
%>

3. response 對象

用於響應客戶請求,向客戶端輸出信息

3.1 重定向網頁

語法:

response.sendRedirect(String path);

Notice: 重定向之後的代碼沒有意義

3.2 處理HTTP頭文件

禁用緩存:對於一些安全性較高的網站,通常需要這樣

<%
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>

設置頁面自動刷新

<%
response.setHeader("refresh","10"); //每隔10秒自動刷新一次
%>

定時跳轉網頁

response.setHeader("refresh","5;URL=login.jsp");

3.3 設置輸出緩沖

通常情況下,服務器要輸出的內容會先放入緩存,然後再把緩存區的內容寫入客戶端。當滿足以下3種情況時就會寫入:

JSP頁面輸出信息已經全寫入緩沖區 緩沖區已滿

在JSP頁面中,調用瞭response對象的flushBuffer() or out的flush()

對緩沖區進行配置的方法

方法 說明
flushBuffer() 強制將緩沖區的內容輸出客戶端
getBufferSize() 獲取響應所使用的緩沖區的實際大小,如果沒有緩沖區,則返回0
setBufferSize(int size) 設置緩沖區的大小
reset() 清楚緩沖區的內容,同時清除狀態碼和報頭
isCommitted() 檢測服務器端是否已經把數據寫入客戶端

4. Session 對象

session被稱為會話。通過session可以在應用程序的Web頁面進行跳轉時,保存用戶狀態,使整個用戶狀態一直保持下去,知道關閉遊覽器。
如果在一個會話中,客戶端長時間不向服務器發送請求,session對象就會自動消失。

4.1 創建及獲取客戶的會話

通過session對象可以存儲或讀取客戶相關的信息。

//創建
session.setAttribute(String name, Object obj);
//獲取
session.getAttribute(String name);// return an object

4.2 從會話中移除指定對象

session.removeAttribute(String name)

4.3 銷毀session

session.invalidate();

如果在session被銷毀後,再調用session對象的任何方法,都將報出Session already invalidated異常。

4.4 會話超時

用戶登錄網站後在session的有效期外進行相應操作,用戶會看到錯誤頁面。為避免這種情況發生,在開發系統時應該對session的有效性進行判斷。

設置會話生命周期的方法 說明
getLastAccessedTime() 返回客戶端最後次與會話相關聯的請求時間
getMaxInactiveInterval() 以秒為單位返回一個會話內兩個請求最大時間間隔
setMaxInactiveInterval() 以秒為單位設置session的有效時間

也可以在web.xml配置失效時間:


     10  // 10分鐘

5 Application 對象

application對象用於保存所有應用程序中的公有數據。它在服務器啟動時自動創建,在服務器停止時銷毀。

5.1 訪問應用程序初始化參數

web.xml文件位於Web應用所在目錄下的WEB-INF子目錄中。在web.xml文件中通過 標記配置應用程序初始化參數。

application.getInitParameterNames();//獲取全部初始化參數
application.getInitParameter(String name);

5.2 管理應用程序環境屬性

與session對象一樣,也可以在application對象中設置屬性(getAttribute, setAttribute, removeAttribute),但application應用范圍更廣,時間更長。此外還能獲取其他信息:

方法 說明
getServerInfo() 服務器信息
getServletContextName() 應用名稱
getVirtualServerName() 主機名稱

6 config 對象

config對象主要用於獲取服務器的配置信息。是ServletConfig類的一個實例,通過pageContext對象的getServletConfig()方法可以獲取一個config對象。當一個Servlet初始化時,容器把某些信息傳遞給這個Servlet。

web.xml


    config
    config.jsp
    
        name
        abc
    



    config
    /config/*
config.jsp

name: <%= config.getInitParameter("name") %>

config對象常用方法:

方法 說明
getServletContext() 獲取servlet上下文
getServletName() 獲取servlet服務器名
getInitParameter() 獲取服務器該初始參數值
getInitParameterNames() 獲取服務器所有初始參數名稱

6 config 對象

config對象主要用於獲取服務器的配置信息。是ServletConfig類的一個實例,通過pageContext對象的getServletConfig()方法可以獲取一個config對象。當一個Servlet初始化時,容器把某些信息傳遞給這個Servlet。

web.xml


    config
    config.jsp
    
        name
        abc
    



    config
    /config/*
config.jsp

name: <%= config.getInitParameter("name") %>

config對象常用方法:

方法 說明
getServletContext() 獲取servlet上下文
getServletName() 獲取servlet服務器名
getInitParameter() 獲取服務器該初始參數值
getInitParameterNames() 獲取服務器所有初始參數名稱

7 page 對象

指向瞭當前jsp頁面本身,可以看作是this指針的別名。包含的方法有:

方法 說明
getClass() 返回當前Object的類
hashCode() 返回該Object的哈希代碼
toString() 把該Object類轉換成字符串
equals(Object o) 比較該對象和指定的對象是否相等

8 獲取異常的exception對象

exception對象用來處理JSP文件執行時發生的所有錯誤和異常,隻有在page指令中設置為isErrorPage屬性為true的頁面才可以被使用。

如果在JSP頁面中出現沒有捕獲的異常,就會生成exception對象,並把exception對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理exception對象。

exception常用方法:

方法 說明
getMessage() 返回exception對象的異常信息字符串
getLocalizedmessage() 返回本地化的異常錯誤
toString() 返回關於異常錯誤的簡單信息描述
fillInStackTrace() 重寫異常錯誤的棧執行軌跡

9 獲取會話范圍的pageContext對象

它可以獲取JSP頁面的request,response,session,application,exception等對象。JSP頁面中可以直接使用pageContext對象。

常用方法:

方法 說明
forward(String path) 把頁面轉發到另一頁面
getAttribute(String name) 獲取參數值
getAttributeNamesInScope(int scope) 獲取某范圍的參數集合,返回值為Enumeration對象
setAttribute() 為指定范圍內的屬性設置屬性值
removeAttribute() 刪除指定范圍內的指定屬性
getResponse(),getOut(),etc 獲取response,out等不同的對象

Notice: 調用對象的方法在實際開發中少使用,一般都直接用該對象。

發佈留言