JavaWeb基礎回顧:jsp內置對象

概念:內置對象是指在jsp頁面中內置的,不需要定義就可以在網頁中直接使用的對象。jsp規範預定義了內置對象的原因,是爲了提高程序員的開發效率。

認識jsp內置對象:

內置對象的特點:

(1)內置對象是自動載入的,因此它不需要直接實例化。

(2)內置對象是通過web容器來實現和管理的。

(3)在所有的jsp頁面中,直接調用內置對象都是合法的。

jsp規範中定義的9種內置對象:

(1)out對象:負責管理對客戶端的輸出。

(2)request對象:負責得到客戶端的請求信息。

(3)response對象:負責向客戶端發出響應。

(4)session對象:負責保存同一客戶端一次會話過程中的一些信息。

(5)application對象:表示整個應用的環境的信息。

(6)exception對象

(7)page對象

(8)pageContext對象

(9)config對象

out對象

out對象對應的類型是javax.servlet.jsp.JspWriter,作用如下:

(1)用來向客戶端輸出各種數據類型的內容。

(2)對應用服務器上傳輸緩衝區進行管理。

一般情況,out對象都是向瀏覽器輸出文本型的數據,out對象輸出的主要方法有兩個void print()和void println()

out管理管理緩衝區使用的比較少,因爲通常使用服務器端默認的設置,而不需要手動管理,out對象常用的與管理緩衝區有關的函數有void close(),void clearBuffer(),void clear(),int getRemaining(),void flush(),int getBufferSize()

request對象

request代表客戶端的請求信息,主要用來獲取客戶端的參數和流。它對應的類型是javax.servlet.http.HttpServletRequest,其主要的方法如下:

(1)String getMethod():得到提交方式。

(2)String GetRequestURI()

(3)String getProtocol()

(4)String getServletPath()

(5)String getQueryString()

(6)String getServerName()

(7)String getServerPort()

(8)String getRemoteAddr():得到客戶端的ip地址

(9)String getParameter(String name):獲得客戶端傳送給服務器的name參數的值,若沒有則返回null

(10)String[] getParameterValues(String name):以字符串數組形式返回指定參數所有值。

注:直接訪問URL屬於get方式提交;實際上,通過鏈接方式提交也是get方式

        獲取客戶端的信息可以完成一些特定功能,比如getRemoteAddr函數獲取客戶端的ip地址,如果該ip在黑名單,系統可以禁止這部分客戶訪問。

response對象

response對應的類(接口)是javax.servlet.http.HttpServletResponse

1.利用response對象進行重定向

2.利用response對象設置HTTP頭

HTTP頭一般用來設置網頁的基本屬性。可以通過response的setHeader方法來進行設置

<%
    //表示在客戶端緩存中不保存頁面的拷貝
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires",0);
    
    //表示客戶端瀏覽器每隔5s定期刷新一次
    response.setHeader("Refresh","5");
%>

 Cookie操作

HTTP是無狀態的協議。在頁面之間傳遞值時,必須通過服務器。URL傳值方法,隱藏表單方法都可以實現。但通過URL傳值,傳遞的數據可能被看到;通過隱藏表單傳值,傳遞的值會在客戶端源代碼內被看見。

這個時候介紹另一種方法:cookie

但Cookie也不是絕對安全的。如果將敏感信息保存在cookie內,這些信息容易泄露,因此cookie在保存敏感信息方面具有潛在危險。cookie的危險性來源於cookie的被盜取。盜取的方法有如下幾種:

(1)利用跨站腳本技術

(2)通過某些軟件,竊取硬盤下的cookie。

(3)利用客戶端腳本盜取cookie。

解決cookie安全的方法:

(1)替代cookie。將數據保存在服務器端,可選的是session方案。

(2)及時刪除cookie

(3)禁用cookie

session對象

設置session內容:

在session中,有一個函數void session.setAttribute(String name,Object obj);Object可以爲很多,比如String,ArrayList.....

讀取session中的內容:

Object  session.getAttribute(String name);可根據類型將Object進行強制轉換

移除session中的內容:session.removeAttribute(String name);

移除session中的全部內容:void session.invalidate();

利用session可以保存登錄信息

application對象

session中的數據可以被同一個客戶在網站的一次會話過程共享,但對於不同客戶來說session是不同的。

而application對象,對於不同客戶端來說,服務器端的對象是相同的。

很明顯,購物車不能用application來實現,但可以用application來實現統計網站當前在線的用戶名單,因爲所有客戶瀏覽器都應該能夠顯示,或者說,當前在線用戶名單對於所有客戶是共享的,此時當前在線名單就可以存放在服務器端的application中。

對於一個web容器而言,所有的用戶都共同使用一個application對象,服務器啓動後就會自動創建application對象,這個對象會一直保存,直到服務器關閉爲止。

application對應的類(接口)是javax.servlet.ServletContext,其API主要有以下幾個:

1.將內容放入application:void application.setAttribute(String name,Object obj);

2.讀取application中內容:Object application.getAttribute(String name);

3.將內容從application中移除:void application.removeAttribute(String name);

可以用application來統計某個頁面被訪問的次數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章