『壹』 ASP+js session 如何設置30秒清除
建立一個clear.asp,裡面的代碼為<%
Session.Abandon
%><script language=javascript>self.close();</script> 然後在需要的頁面裡面加入javascript腳本,定時30秒後運行清除session的文件clear.asp:
<script type="text/javascript">
function clearsession()
{
var t=setTimeout("window.open('clear.asp','_blank');",30000)
}
clearsession();
</script>
『貳』 js 怎樣清除session
不能,session是保存在伺服器中的,用客戶端腳本當然無法操作伺服器內存中的數據.
『叄』 js怎麼設置cookie得到cookie刪除cookie
avaScript是運行在客戶端的腳本,因此一般是不能夠設置Session的,因為Session是運行在伺服器端的。
而cookie是運行在客戶端的,所以可以用JS來設置cookie.
假設有這樣一種情況,在某個用例流程中,由A頁面跳至B頁面,若在A頁面中採用JS用變數temp保存了某一變數的值,在B頁面的時候,同樣需要使用JS來引用temp的變數值,對於JS中的全局變數或者靜態變數的生命周期是有限的,當發生頁面跳轉或者頁面關閉的時候,這些變數的值會重新載入,即沒有達到保存的效果。解決這個問題的最好的方案是採用cookie來保存該變數的值,那麼如何來設置和讀取cookie呢?
首先需要稍微了解一下cookie的結構,簡單地說:cookie是以鍵值對的形式保存的,即key=value的格式。各個cookie之間一般是以「;」分隔。
JS設置cookie:
假設在A頁面中要保存變數username的值("jack")到cookie中,key值為name,則相應的JS代碼為:
復制代碼代碼如下:
document.cookie="name="+username;
JS讀取cookie:
假設cookie中存儲的內容為:name=jack;password=123
則在B頁面中獲取變數username的值的JS代碼如下:
var username=document.cookie.split(";")[0].split("=")[1];
//JS操作cookies方法!
//寫cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
讀取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
刪除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//使用示例
setCookie("name","hayden");
alert(getCookie("name"));
//如果需要設定自定義過期時間
//那麼把上面的setCookie函數換成下面兩個函數就ok;
//程序代碼
function setCookie(name,value,time)
{
var strsec = getsec(time);
var exp = new Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
alert(str);
var str1=str.substring(1,str.length)*1;
var str2=str.substring(0,1);
if (str2=="s")
{
return str1*1000;
}
else if (str2=="h")
{
return str1*60*60*1000;
}
else if (str2=="d")
{
return str1*24*60*60*1000;
}
}
//這是有設定過期時間的使用示例:
//s20是代表20秒
//h是指小時,如12小時則是:h12
//d是天數,30天則:d30
setCookie("name","hayden","s20");
『肆』 jsp關閉瀏覽器時,如何清空session
jsp關閉瀏覽器時,清空session的方式如下:
function window.onUnload()
{
var newWindow;
if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
{ newWindow=window.open('destorys.jsp','網頁名稱','width=0,height=0,top=4000,left=4000');//新窗口將在視區之外打開 newWindow.opener=null; sleep(5000); newWindow.close();//新擾頃窗口關閉 }
}
function sleep(milisecond)
{ var currentDate,beginDate=new Date(); var beginHour,beginMinute,beginSecond,beginMs; var hourGaps,minuteGaps,secondGaps,msGaps,gaps; beginHour=beginDate.getHours(); beginMinute=beginDate.getMinutes(); beginSecond=beginDate.getSeconds(); beginMs=beginDate.getMilliseconds(); do { currentDate=new Date(); hourGaps=currentDate.getHours() - beginHour; minuteGaps=currentDate.getMinutes() - beginMinute; secondGaps=currentDate.getSeconds() - beginSecond; msGaps=currentDate.getMilliseconds() - beginMs; if(hourGaps<0) hourGaps+=24; //考慮進時進漏世分進秒的特殊情況 gaps=hourGaps*3600+ minuteGaps*60+ secondGaps; gaps=gaps*1000+msGaps; }while(gaps<milisecond); }
其中紅色部分為你指向清除session的JSp頁面。
如下:
<%@ page contentType="text/html; charset=GBK" %> <%@ page language="java" import="java.lang.*"%> <jsp:useBean id="login" scope="page" class="com.util.Login"/> <% session.removeAttribute("緩搜陸username"); session.removeAttribute("userid"); session.removeAttribute("power"); session.removeAttribute("flag"); %>
這樣,在每個後台頁面引用一個這個JS,就可以實現了。
『伍』 javascript清除session的問題
這樣應該很難實現的.但可以想一起不常用的辦法.
首先,session是用戶級的一個全局變數,也就是說不管你是子頁還是父頁都是一樣的session,而不會存在什麼子頁的春臘session或是父頁的session,它們是一個,不管你有多少個頁面在未超時的情況下都是一個session的.
所以,這樣你可以讓你的存活時間改為0,也就是只有瀏覽器打開時是存活的,瀏覽器關閉時即可關閉就可以了.不知道你是出於什麼樣的目的來做這個代碼的.
當然,因為是用戶級的,所以如果設置時間為0時,所有的用戶都是一樣的.如果想實現某一個用戶關閉就關閉時,不能這行行樣設置的.一個例子,所有的用戶都是關閉網頁時30分鍾取消session,這個值的設置是在application,站在了服務端的全局,所以不能對特定的一個用戶進行設置的.雖然可以使用頁面中,頁面級可以,但用戶級,還是特定用戶時,可以使用session來做一下.
用戶打開一個頁面時,用session("pagecount")賦值為1,當然再打開一個就加1,這樣可以統計當前用戶打開了多少個頁面的.關閉一個就減1.
判斷一下你這個是否是那個特殊的用戶,若是,則檢查其session("pagecount"),如果這個值是1時,在關閉時可以直接清除session,若不是1時,將其值減1,這樣做的目的,只是對於特定用戶進行的有效清除.
當然,如果是所以用戶都是這樣子的話,一定要用timeout進行設置,這樣非常方便.
在打開一個瀏覽器中可以這樣寫:
if
isnull(session("pagecount"))
then
session("pagecount")=1
else
session("pagecount")=session("pagecount"+1)
end
if
關閉瀏覽器的事件中可以這樣寫:
if
session("pagecount")
=
1
then
'這里清除session
else
session("pagecount")
=
session("pagecount")-1
end
if
這樣可以實現當關閉最後一個窗口時清除session.當然,這些還要加上對用戶的判斷,可以實現對特定用戶用行特定清除.而不是所有用戶.
還打可實現,關閉第一個頁面時進行清除,比如用戶打了第一個頁面,用session變數記錄下來,關閉時檢查是否為記錄的頁面,若是,則清除檔森嘩session或者幹些其他的事.