java session 管理器_Java的session问题!!!

本文探讨了使用Java实现权限控制的方法,特别是如何利用HTTP Session来跟踪用户的登录状态,并讨论了当用户非法退出时如何正确地处理Session结束的问题。

请教大虾:

我用JAVA实现权限控制功能:

当一开始登录时让用户输入工号和密码,成功后用session在数据库处登记该登录信息,

当退出后,发送消息给服务器,表示该会话结束,下次进入须重新登录。

问题如下:当用户非法退出后(直接关掉浏览器),我怎么知道此次会话结束并记录已退出信息呢?否则如果不记录,服务器可能一直保持会话连接状态。

请帮帮忙,一点小分,不成敬意!先谢谢了!

|

直接利用session就行了,服务器确实不能得知何时客户端结束了(例如:网络端了、客户关机、客户关闭浏览器、等等)。但是能保证下次(重开浏览器,注意与刷新不同,刷新仍在原来的session范围内)打开页面的时候一定是个新的session,换句话说:就是用户必须重新输入“工号和密码”,才能浏览特定页面。下面是个简单的例子:(JBuilder5做的)Jsp1.jsp和Jsp2.jsp

---------------------Jsp1.jsp------------------

Jsp1

JBuilder Generated JSP

Enter new value   :

------------------Jsp2.jsp------------------------

Jsp2

JBuilder Generated JSP

---------------------------end of code-----------------

启动tomcat后,注意如果直接浏览jsp2是不允许的,

当先进入jsp1然后submit进入jsp2,第一次会提示session为空,以后就会显示第一次在jsp1里面输入的内容(包括刷新jsp2),但如果关闭该浏览器,再要直接浏览jsp2还是不允许的。显然此时session没有超时,说明这必定是一个新的session.

|

当用户关闭浏览器后,服务器端保留SESSION直到SESSION超时,但本地的SESSION就没有了。

若用户再想开浏览器进入的话,SESSION里肯定没有登陆信息。

|

hehe.其实简单,当用户关掉浏览器的时候,javascript里面有个onUpload的事件被激发,你通过这个事件的处理器就可以调用相应的jsp/servlet,做你想做的事情了。。

|

to hawk_js(鹰): session 时间根据需要而定。但如果你想要关掉浏览器后

立即退出,那这样恐怕不行。而要采用在javaScript中写unload的方法。

但那样会很麻烦,因为每个文件中都要写unload方法。

最终采用什麽方法,还是要看客户的要求如何。

|

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 */

}

|

设定session过期时间。

addSessionListener(),session过期回自动调用此函数,

在其中进行logout.

|

你可以在你的jsq页面的头几行加入一段验证程序,判断在session中是否有一个特定的信息,如果没有提示出错,就可以了

|

我觉得beyondii的办法,可行,因为如果当前页关掉以后Session会消失的。

|

也是用session了,呵呵

|

利用HttpSessionListener编写自己的监听器,如果浏览器被非法关闭,Session被去掉,将会调用你的监听器,你可以在监听器的ValueBound()和ValueUnBound()方法中处理相应的事件。可以看看Servlet规范,里面有描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值