Java的session问题!!! 设定session过期时间。addSessionListener(),session过期回自动调用此函数,在其中进行logout. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当用户关闭浏览器后,服务器端保留SESSION直到SESSION超时,但本地的SESSION就没有了。若用户再想开浏览器进入的话,SESSION里肯定没有登陆信息。 hehe.其实简单,当用户关掉浏览器的时候,javascript里面有个onUpload的事件被激发,你通过这个事件的处理器就可以调用相应的jsp/servlet,做你想做的事情了。。 wqxtt(wqxtt):我觉得你的做法是可以的,但麻烦给个详细实现方法可以吗?先谢了! to skyyoung(路人甲) : 请问本地SESSION与服务端SESSION怎么交互,详细一点好吗?to wqxtt(wqxtt) : 请问是不是无论什么方法关掉浏览器(包括非法如断电),都要激发该事件? to hawk_js(鹰): session 时间根据需要而定。但如果你想要关掉浏览器后立即退出,那这样恐怕不行。而要采用在javaScript中写unload的方法。但那样会很麻烦,因为每个文件中都要写unload方法。最终采用什麽方法,还是要看客户的要求如何。 to fat_tiger(胖老虎): 客户的要求是:在关掉浏览器(直接点浏览器右上角的X符号,来关浏览器)后,此时用户必须重新经过登录(密码验证),才能看到他想看的页面,而如果他不登录,直接输入某个页面的路径的话,则不能进入,并提醒他要重新登录才能进入。 请问,具体我应该怎么做? 你可以在你的jsq页面的头几行加入一段验证程序,判断在session中是否有一个特定的信息,如果没有提示出错,就可以了 我觉得beyondii的办法,可行,因为如果当前页关掉以后Session会消失的。 直接利用session就行了,服务器确实不能得知何时客户端结束了(例如:网络端了、客户关机、客户关闭浏览器、等等)。但是能保证下次(重开浏览器,注意与刷新不同,刷新仍在原来的session范围内)打开页面的时候一定是个新的session,换句话说:就是用户必须重新输入“工号和密码”,才能浏览特定页面。下面是个简单的例子:(JBuilder5做的)Jsp1.jsp和Jsp2.jsp---------------------Jsp1.jsp------------------<%@ page contentType="text/html; charset=GBK" %><html><head><title>Jsp1</title></head><body><h1>JBuilder Generated JSP</h1><%%><form method="post" action = Jsp2.jsp><br>Enter new value : <input name="sample"><br><br><br><input type="submit" name="Submit" value="Submit"><input type="reset" value="Reset"><br></form></body></html>------------------Jsp2.jsp------------------------<%@ page contentType="text/html; charset=GBK" %><html><head><title>Jsp2</title></head><body><h1>JBuilder Generated JSP</h1><% String s; s = (String)session.getAttribute("test"); if ( s== null ){ s = request.getParameter("sample"); if ( s == null ){ out.println("can not get here directly, please enter jsp1.jsp first "); } else{ out.println("session is null"); out.println("read from form"); session.setAttribute("test",s); } } else{ out.println("session is :" + s); }%></body></html>---------------------------end of code-----------------启动tomcat后,注意如果直接浏览jsp2是不允许的,当先进入jsp1然后submit进入jsp2,第一次会提示session为空,以后就会显示第一次在jsp1里面输入的内容(包括刷新jsp2),但如果关闭该浏览器,再要直接浏览jsp2还是不允许的。显然此时session没有超时,说明这必定是一个新的session. faint页面关掉的时候,session自然就丢失了,客户下次进来是必须要登陆的!服务器端的session是有失效时间的,不用设置的过短,要不然客户需要不停的重新登陆万一用户在你设定的时间到来之前关掉浏览器,然后又直接进入(不登录),并且仍然未到过期时间,怎么办? ~~~~~~~~~~~~~~~~~~~~~~~~不可能!!那你就删掉服务器端上次的登陆信息,重新作一次登陆! to hawk_js(鹰): 如果你愿意在每个一页面都判断session有无的话,那通过session就可意解决。还有一种办法:if (httpHeader.reference = "") /* 手入力URL */{ /* forbidden, go to login page */}else { /* 由别的画面迁移而来 */ /* ok */} to hawk_js(鹰): 如果你愿意在每个一页面都判断session有无的话,那通过session就可意解决。还有一种办法:if (httpHeader.reference = "") /* 手入力URL */{ /* forbidden, go to login page */}else { /* 由别的画面迁移而来 */ /* ok */} 利用HttpSessionListener编写自己的监听器,如果浏览器被非法关闭,Session被去掉,将会调用你的监听器,你可以在监听器的ValueBound()和ValueUnBound()方法中处理相应的事件。可以看看Servlet规范,里面有描述。 如何才能轻松学好JAVA 急~~~~java将图片加在截图鼠标实时位置 向各位高手请教一个关于LIST求和的问题,谢谢了 初学者提问 简单的变量问题~!困惑中!~望高手解答.谢谢~! \u663e\u793a\u6c49\u5b57 麻烦帮我看下这段代码哪里问题 main函数的问题 #####刚学了java有点问题请教各位高手##### 帮我解决这个问题给80~~~~~~~~`至少 如何取得数组长度? String[] s=request.getParameterValues("form") s.length()不行! jbuilder5中如何更改frame标题栏上的小图标?
若用户再想开浏览器进入的话,SESSION里肯定没有登陆信息。
请问本地SESSION与服务端SESSION怎么交互,详细一点好吗?
to wqxtt(wqxtt) :
请问是不是无论什么方法关掉浏览器(包括非法如断电),都要激发该事件?
立即退出,那这样恐怕不行。而要采用在javaScript中写unload的方法。
但那样会很麻烦,因为每个文件中都要写unload方法。
最终采用什麽方法,还是要看客户的要求如何。
客户的要求是:在关掉浏览器(直接点浏览器右上角的X符号,来关浏览器)后,此时用户
必须重新经过登录(密码验证),才能看到他想看的页面,而如果他不登录,直接输入某个页
面的路径的话,则不能进入,并提醒他要重新登录才能进入。
请问,具体我应该怎么做?
---------------------Jsp1.jsp------------------
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
Jsp1
</title>
</head>
<body>
<h1>
JBuilder Generated JSP
</h1>
<%
%><form method="post" action = Jsp2.jsp>
<br>Enter new value : <input name="sample"><br>
<br><br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" value="Reset">
<br>
</form>
</body>
</html>------------------Jsp2.jsp------------------------
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
Jsp2
</title>
</head>
<body>
<h1>
JBuilder Generated JSP
</h1>
<% String s; s = (String)session.getAttribute("test"); if ( s== null ){ s = request.getParameter("sample");
if ( s == null ){
out.println("can not get here directly, please enter jsp1.jsp first ");
}
else{
out.println("session is null");
out.println("read from form");
session.setAttribute("test",s);
}
}
else{ out.println("session is :" + s); }%></body>
</html>
---------------------------end of code-----------------启动tomcat后,注意如果直接浏览jsp2是不允许的,
当先进入jsp1然后submit进入jsp2,第一次会提示session为空,以后就会显示第一次在jsp1里面输入的内容(包括刷新jsp2),但如果关闭该浏览器,再要直接浏览jsp2还是不允许的。显然此时session没有超时,说明这必定是一个新的session.
页面关掉的时候,session自然就丢失了,客户下次进来是必须要登陆的!
服务器端的session是有失效时间的,不用设置的过短,要不然客户需要不停的重新登陆
万一用户在你设定的时间到来之前关掉浏览器,然后又直接进入(不登录),并且
仍然未到过期时间,怎么办? ~~~~~~~~~~~~~~~~~~~~~~~~不可能!!
那你就删掉服务器端上次的登陆信息,重新作一次登陆!
就可意解决。
还有一种办法:
if (httpHeader.reference = "") /* 手入力URL */
{
/* forbidden, go to login page */
}else { /* 由别的画面迁移而来 */
/* ok */
}
就可意解决。
还有一种办法:
if (httpHeader.reference = "") /* 手入力URL */
{
/* forbidden, go to login page */
}else { /* 由别的画面迁移而来 */
/* ok */
}