『壹』 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或者干些其他的事.