Jsp的內建物件介紹
JSP全名為Java Server Pages,中文名叫java伺服器頁面。
JSP中一共預先定義了9個這樣的物件,分別為:request、response、session、application、out、pagecontext、config、page、exception
1、request物件javax.servlet.http.HttpServletRequest request物件代表了客戶端的請求資訊,主要用於接受通過HTTP協議傳送到伺服器的資料。(包括頭資訊、系統資訊、請求方式以及請求引數等)。request對 象的作用域為一次請求。
當Request物件獲取客戶提交的漢字字元時,會出現亂碼問題,必須進行特殊處理。首先,將獲取的字串用ISO-8859-1進行編碼,並將編碼存發島一個位元組陣列中,然後再將這個陣列轉化為字串物件如下
Request常用的方法:getParameter(String strTextName) 獲取表單提交的資訊.
getProtocol() 獲取客戶使用的協議。
String strProtocol=request.getProtocol();
getServletPath() 獲取客戶提交資訊的頁面。String strServlet=request.getServletPath();
getMethod() 獲取客戶提交資訊的方式 String strMethod=request.getMethod();
getHeader() 獲取HTTP標頭檔案中的accept,accept-encoding和Host的值,String strHeader=request.getHeader();
getRermoteAddr() 獲取客戶的IP地址。String strIP=request.getRemoteAddr();
getRemoteHost() 獲取客戶機的名稱。String clientName=request.getRemoteHost(); getServerName() 獲取伺服器名稱。 String serverName=request.getServerName(); getServerPort() 獲取伺服器的埠號。 int serverPort=request.getServerPort(); getParameterNames() 獲取客戶端提交的所有引數的名字。
Enumeration enum = request.getParameterNames();
while(enum.hasMoreElements())
{
Strings(String)enum.nextElement();
out.println(s);
}
2、response物件 javax.servlet.http.HttpServletResponse
response 代表的是對客戶端的響應,主要是將JSP容器處理過的物件傳回到客戶端。response物件也具有作用域,它只在JSP頁面內有效。
具有動態響應contentType屬性,當一個使用者訪問一個JSP頁面時,如果該頁面用page指令設定頁面的contentType屬性是text/html,那麼JSP引擎將按照這個屬性值做出反應。
如果要動態改變這換個屬性值來響應客戶,就需要使用Response物件的setContentType(String s)方法來改變contentType的屬性值。
response.setContentType(String s); 引數s可取text/html,application/x-msexcel,application/msword等。
在某些情況下,當響應客戶時,需要將客戶重新引導至另一個頁面,可以使用Response的sendRedirect(URL)方法實現客戶的重定向。
例如response.sendRedirect(index.jsp);
3、session物件 javax.servlet.http.HttpSession
Session物件是一個JSP內建物件,它在第一個JSP頁面被裝載時自動建立,完成會話期管理。從一個客戶開啟瀏覽器並連線到伺服器開始,到客戶關閉瀏覽器離開這個伺服器結束,被稱為一個會話。當一個客戶訪問一個伺服器時,可能會在這個伺服器的幾個頁面之間切換,伺服器應當通過某種辦法知道這是一個客戶,就需要Session物件。 當一個客戶首次訪問伺服器上的一個JSP頁面時,JSP引擎產生一個Session物件,同時分配一個String型別的ID號,JSP引擎同時將這換個ID號傳送到客戶端,存放在Cookie中,這樣Session物件,直到客戶關閉瀏覽器後,伺服器端該客戶的Session物件才取消,並且和客戶的會話對應關係消失。當客戶重新開啟瀏覽器再連線到該伺服器時,伺服器為該客戶再建立一個新的Session物件。 session 物件是由伺服器自動建立的與使用者請求相關的物件。伺服器為每個使用者都生成一個session物件,用於儲存該使用者的資訊,跟蹤使用者的操作狀態。
session物件內部使用Map類來儲存資料,因此儲存資料的格式為 “Key/value”。 session物件的value可以使複雜的物件型別,而不僅僅侷限於字串型別。
public String getId():獲取Session物件編號。
public void setAttribute(String key,Object obj):將引數Object指定的物件obj新增到Session物件中,併為新增的物件指定一個索引關鍵字。
public Object getAttribute(String key):獲取Session物件中含有關鍵字的物件。
public Boolean isNew():判斷是否是一個新的客戶。
4、application物件javax.servlet.ServletContext application 物件可將資訊儲存在伺服器中,直到伺服器關閉,否則application物件中儲存的資訊會在整個應用中都有效。與session物件相比,application物件生命週期更長,類似於系統的“全域性變數”。
伺服器啟動後就產生了這個Application物件,當客戶再所訪問的網站的各個頁面之間瀏覽時,這個Application物件都是同一個,直到伺服器關閉。但是與Session物件不同的時,所有客戶的Application物件都時同一個,即所有客戶共享這個內建的Application物件。
setAttribute(String key,Object obj):將引數Object指定的物件obj新增到Application物件中,併為新增的物件指定一個索引關鍵字。
getAttribute(String key):獲取Application物件中含有關鍵字的物件。
5、out 物件javax.servlet.jsp.jspWriter out 物件用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。在使用 out 物件輸出資料時,可以對資料緩衝區進行操作,及時清除緩衝區中的殘餘資料,為其他的輸出讓出緩衝空間。待資料輸出完畢後,要及時關閉輸出流。
Out物件時一個輸出流,用來向客戶端輸出資料。Out物件用於各種資料的輸出。其常用方法如下。
out.print():輸出各種型別資料。
out.newLine():輸出一個換行符。
out.close():關閉流。
6、pageContext 物件javax.servlet.jsp.PageContext pageContext 物件的作用是取得任何範圍的引數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等物件。
pageContext物件的建立和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext物件。
page 物件代表JSP本身,只有在JSP頁面內才是合法的。 page隱含物件本質上包含當前 Servlet介面引用的變數,類似於Java程式設計中的 this 指標。
7、config 物件javax.servlet.ServletConfig config 物件的主要作用是取得伺服器的配置資訊。通過 pageConext物件的 getServletConfig() 方法可以獲取一個config物件。當一個Servlet 初始化時,容器把某些資訊通過 config物件傳遞給這個 Servlet。開發者可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化引數。
8 cookie 物件 Cookie是Web伺服器儲存在使用者硬碟上的一段文字。Cookie允許一個Web站點在使用者電腦上儲存資訊並且隨後再取回它。舉例來說,一個Web站點可能會為每一個訪問者產生一個唯一的ID,然後以Cookie檔案的形式儲存在每個使用者的機器上。
建立一個Cookie物件 呼叫Cookie物件的建構函式就可以建立Cookie物件。Cookie物件的建構函式有兩個字串引數:Cookie名字和Cookie值。
例如:Cookie c = new Cookie(username”,john”); 將Cookie物件傳送到客戶端。
JSP中,如果要將封裝好的Cookie物件傳送到客戶端,可使用Response物件的addCookie()方法。
例如:response.addCookie(c),讀取儲存到客戶端的Cookie。
使用Request物件的getCookie()方法,執行時將所有客戶端傳來的Cookie物件以陣列的形式排列,如果要取出符合需要的Cookie物件,就需要迴圈比較陣列內每個物件的關鍵字。設定Cookie物件的有效時間,用Cookie物件的setMaxAge()方法便可以設定Cookie物件的有效時間,
例如:Cookie c = newCookie(username”,”john”);c.setMaxAge(3600);
Cookie物件的典型應用時用來統計網站的訪問人數。由於代理伺服器、快取等的使用,唯一能幫助網站精確統計來訪人數的方法就是為每個訪問者建立一個唯一ID。使用Cookie,網站可以完成以下工作:
測定多少人訪問過。測定訪問者有多少是新使用者(即第一次來訪),多少是老使用者。
測定一個使用者多久訪問一次網站。當一個使用者第一次訪問時,網站在資料庫中建立一個新的ID,並把ID通過Cookie傳送給使用者。使用者再次來訪時,網站把該使用者ID對應的計數器加1,得到使用者的來訪次數。
9、exception 物件java.lang.Throwable exception 物件的作用是顯示異常資訊,只有在包含 isErrorPage=”true” 的頁面中才可以被使用,在一般的JSP頁面中使用該物件將無法編譯JSP檔案。
excepation物件和Java的所有物件一樣,都具有系統提供的繼承 結構。
exception 物件幾乎定義了所有異常情況。在Java程式中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 物件,並把 exception 物件傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 物件。