為靜態頁面HTML增加session功能
阿新 • • 發佈:2019-02-17
一般來說,只有伺服器端的CGI程式(ASP、PHP、JSP)具有session會話功能,用來儲存使用者在網站期間(會話)的活動資料資訊,而對於數量眾多的靜態頁面(HTML)來說,只能使用客戶端的cookies來儲存臨時活動資料,但對於cookies的操作是個很煩瑣的過程,遠沒有對於session操作那樣簡便。
為此,本文向讀者推薦一種在DHTML中的解決方案“Persistence技術”,使得在靜態頁面中也能使用session會話功能。
使用保持(Persistence)技術讓我們能夠在當前會話過程中儲存一些資料物件到客戶端,它減少了對伺服器的訪問請求,充分發揮了客戶端計算機的資料處理能力,從而也整體提升了頁面顯示效率。
Microsoft Internet Explorer 5瀏覽器和以後的版本都支援使用狀態保持(Persistence)技術,它有以下幾種行為可供呼叫:
saveFavorite—當頁面被新增到收藏夾時儲存頁面狀態和資訊
saveHistory—在當前會話中儲存頁面狀態和資訊
saveSnapshot—當頁面被儲存到硬碟時,儲存頁面狀態和資訊persists
page state and information directly in the page when users save the Web page to
their hard disk.
userData—在當前會話中用XML格式儲存頁面狀態和資訊 網頁製作
Persistence技術打破了以前使用使用cookies和session的傳統,它繼承了以前cookies的一些安全策略,同時也增加了儲存和管理資料的能力。我們的每個頁面有64KB的使用者資料儲存容量,對於每個站點總計有640KB的儲存上限。
Persistence技術儲存的資料格式符合XML標準,所以可以使用DOM技術中的getAttribute和setAttribute方法來存取資料。
下面是一個Persistence技術的典型應用,通過對Persistence儲存資料的分析,使得靜態頁面具有驗證功能。
實際判斷過程是這樣的:
有三個物件:遊客V、導航頁面A、內容頁面C
遊客V只能通過導航頁面A的連結才能看到內容頁面C;
如果遊客V是通過其它途徑來訪問內容頁面C(比如通過其它網站的超連結、直接在IE位址列中輸入網址訪問等),內容頁面C將自動提示版權資訊,顯示空白頁。
具體實現步驟:
一、在“導航頁面”中加入一個STYLE用來定義persistent類,同時加入儲存函式fnSave用來授權。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT language=Javascript>
網頁程式設計
function fnSave(){
oPersistDiv.setAttribute("bIsValid","true");
oPersistDiv.save("oXMLStore");
}
</SCRIPT>
二、在“導航頁面”的<body>和</body>區域中定義一個層用來標識Persistence物件
<DIV CLASS=userData ID="oPersistDiv"></DIV>
三、在“導航頁面”的超連結屬性中加入一條語句用來呼叫函式fnSave:
<a href='redhat2.htm' onmousedown="fnSave()">
接下來,為“內容頁面”加入驗證功能:
四、在“內容頁面”中加入一個STYLE用來定義persistent類,同時加入儲存函式fnLoad用來判斷合法性。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
var bPageValid=false;
function fnLoad(){
oPersistDiv.load("oXMLStore");
if((oPersistDiv.getAttribute("bIsValid"))&&(oPersistDiv.getAttribute("bIsValid")=="true")){
bPass=true;
網頁模板
}
else{
bPass=false;
}
oPersistDiv.setAttribute("bIsValid","false");
oPersistDiv.save("oXMLStore");
if(bPass==false){
var sError="來源不明,請您通過授權網站訪問我們.";
alert(sError);
location.href="about:blank";
}
}
</SCRIPT>
五、修改“內容頁面”的<body>區域如下:
<BODY onload="fnLoad()">
<DIV CLASS=userData ID="oPersistDiv"></DIV>
從以上範例可看出,通過persistence的使用,使得普通的靜態內容頁面具有了session功能,一般的不敏感資訊完全可以通過session儲存在客戶端。
使用多個帶有session功能的靜態頁面可以完成眾多複雜任務,如虛擬購物車,高階搜尋引擎等。同時,由於將以前伺服器端承擔的部分session任務轉移到客戶端,減少了資料互動量,大大降低了伺服器的負擔。
為此,本文向讀者推薦一種在DHTML中的解決方案“Persistence技術”,使得在靜態頁面中也能使用session會話功能。
使用保持(Persistence)技術讓我們能夠在當前會話過程中儲存一些資料物件到客戶端,它減少了對伺服器的訪問請求,充分發揮了客戶端計算機的資料處理能力,從而也整體提升了頁面顯示效率。
Microsoft Internet Explorer 5瀏覽器和以後的版本都支援使用狀態保持(Persistence)技術,它有以下幾種行為可供呼叫:
saveFavorite—當頁面被新增到收藏夾時儲存頁面狀態和資訊
saveHistory—在當前會話中儲存頁面狀態和資訊
saveSnapshot—當頁面被儲存到硬碟時,儲存頁面狀態和資訊persists
page state and information directly in the page when users save the Web page to
their hard disk.
userData—在當前會話中用XML格式儲存頁面狀態和資訊 網頁製作
Persistence技術打破了以前使用使用cookies和session的傳統,它繼承了以前cookies的一些安全策略,同時也增加了儲存和管理資料的能力。我們的每個頁面有64KB的使用者資料儲存容量,對於每個站點總計有640KB的儲存上限。
Persistence技術儲存的資料格式符合XML標準,所以可以使用DOM技術中的getAttribute和setAttribute方法來存取資料。
下面是一個Persistence技術的典型應用,通過對Persistence儲存資料的分析,使得靜態頁面具有驗證功能。
實際判斷過程是這樣的:
有三個物件:遊客V、導航頁面A、內容頁面C
遊客V只能通過導航頁面A的連結才能看到內容頁面C;
如果遊客V是通過其它途徑來訪問內容頁面C(比如通過其它網站的超連結、直接在IE位址列中輸入網址訪問等),內容頁面C將自動提示版權資訊,顯示空白頁。
具體實現步驟:
一、在“導航頁面”中加入一個STYLE用來定義persistent類,同時加入儲存函式fnSave用來授權。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT language=Javascript>
網頁程式設計
function fnSave(){
oPersistDiv.setAttribute("bIsValid","true");
oPersistDiv.save("oXMLStore");
}
</SCRIPT>
二、在“導航頁面”的<body>和</body>區域中定義一個層用來標識Persistence物件
<DIV CLASS=userData ID="oPersistDiv"></DIV>
三、在“導航頁面”的超連結屬性中加入一條語句用來呼叫函式fnSave:
<a href='redhat2.htm' onmousedown="fnSave()">
接下來,為“內容頁面”加入驗證功能:
四、在“內容頁面”中加入一個STYLE用來定義persistent類,同時加入儲存函式fnLoad用來判斷合法性。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
var bPageValid=false;
function fnLoad(){
oPersistDiv.load("oXMLStore");
if((oPersistDiv.getAttribute("bIsValid"))&&(oPersistDiv.getAttribute("bIsValid")=="true")){
bPass=true;
網頁模板
}
else{
bPass=false;
}
oPersistDiv.setAttribute("bIsValid","false");
oPersistDiv.save("oXMLStore");
if(bPass==false){
var sError="來源不明,請您通過授權網站訪問我們.";
alert(sError);
location.href="about:blank";
}
}
</SCRIPT>
五、修改“內容頁面”的<body>區域如下:
<BODY onload="fnLoad()">
<DIV CLASS=userData ID="oPersistDiv"></DIV>
從以上範例可看出,通過persistence的使用,使得普通的靜態內容頁面具有了session功能,一般的不敏感資訊完全可以通過session儲存在客戶端。
使用多個帶有session功能的靜態頁面可以完成眾多複雜任務,如虛擬購物車,高階搜尋引擎等。同時,由於將以前伺服器端承擔的部分session任務轉移到客戶端,減少了資料互動量,大大降低了伺服器的負擔。