用jsp可否屏蔽ie的前进、后退键吗?
我做一个登录程序:login.jsp->index.jsp->....->logout.jsp
我想达到这样的效果:登录进到index.jsp后,点ie后退则出现错误提示页面:“已经登录”,不能再返回到login.jsp;
退出到logout.jsp页面后,点ie后退则出现错误提示页面:“已经退出”,不能再返回到上一页面;
费了半天劲,也不能很好的控制,谁能给我个解决方法?请尽量具体说说
问题点数:50、回复次数:15Top
1 楼hui_feng(盘桃2)回复于 2005-08-19 17:35:27 得分 0
应该可以。不过我不知道怎么实现。。。。。。也想要。帮你顶一下。Top
2 楼samplerain(samplerain)回复于 2005-08-19 18:39:33 得分 20
用filter来实现:
1.写一个filter类 implements javax.servlet.Filter
在doFilter中校验登陆信息,具体google一下(其实就几句话啦)
2.web.xml中配置这个filter,以及filtermapping,也 gooooogle
3.设置session timeout 时间
4.登出的时候 session.invalidate()
。。Top
3 楼shenpipi(皮皮)回复于 2005-08-19 18:53:37 得分 10
首先说,你需要的这个功能不叫屏蔽ie的前进和后退.
要完成这个功能,只需要在所有的页面里都包含对用户是否登陆的检查(当然,login.jsp里面不能有),如果没有登陆就重定向(这个功能可以做成filter,也可以不做,自己看着办).而且,要设置页面的expire的时间.Top
4 楼leonyuann(舞月光)回复于 2005-08-19 21:13:47 得分 0
shenpipi,能不能具体说说,怎么在页面中检查,又怎么重定向?能给个具体的代码吗?我真的很想了解,谢谢Top
5 楼humanity(城市边缘的狼)回复于 2005-08-19 21:17:31 得分 10
response.setHeader("Expire",0); // 立即就失效,再次访问需要重新获取。
response.setHeader("Pragma","no-cache"); //不缓存页面,
response.setHeader("Pragma","no-store");// 任何环境都不缓存。
没有缓存,他点击 前进 , 后退 就没有意义。
Top
6 楼humanity(城市边缘的狼)回复于 2005-08-19 21:20:13 得分 0
失察,
你如果检测到已经登录就直接转到 登陆后的主页面, 已经注销就转到登录页面,
因为你按上面的方式处理后就不会有缓存,自然就会很及时地发现 这个用户是不是已经登录。Top
7 楼wangqm0629(风景)回复于 2005-08-19 22:05:45 得分 0
我也想知道Top
8 楼xiaohai_34(●饼干●)回复于 2005-08-20 23:15:55 得分 0
现在只想到sessionTop
9 楼leonyuann(舞月光)回复于 2005-08-22 09:15:23 得分 0
humanity(很健忘了),你的方法网上说的很多,但这样做ie依然能够后退、前进,因为ie后退只是一个对客户端cache的操作,而与服务器端无关Top
10 楼shoulders(Developer)回复于 2005-08-22 09:30:47 得分 10
我觉得这个这么做:
在login.jsp页面的前部分你写短程序专门用来处理session,用来判断用户是否已经登录,如果已经登录,则就forward->index.jsp
同理在其他jsp文件的开头都这么处理,用来判断用户是否已经登录,如果没有登录,就转到登录界面,同时还要考虑session time out的问题.Top
11 楼samplerain(samplerain)回复于 2005-08-22 09:36:45 得分 0
response.setHeader("Expire",0); // 立即就失效,再次访问需要重新获取。
response.setHeader("Pragma","no-cache"); //不缓存页面,
response.setHeader("Pragma","no-store");// 任何环境都不缓存
这些只对https起作用...Top
12 楼strawren(大漠)回复于 2005-08-22 09:38:25 得分 0
解决办法很多,楼上兄弟们说的都可行。
一、
在login.jsp页面的前部分你写短程序专门用来处理session,用来判断用户是否已经登录,如果已经登录,则就forward->index.jsp
同理在其他jsp文件的开头都这么处理,用来判断用户是否已经登录,如果没有登录,就转到登录界面,同时还要考虑session time out的问题.
二、
用filter来实现:
1.写一个filter类 implements javax.servlet.Filter
在doFilter中校验登陆信息,具体google一下(其实就几句话啦)
2.web.xml中配置这个filter,以及filtermapping,也 gooooogle
3.设置session timeout 时间
4.登出的时候 session.invalidate()
Top
13 楼leonyuann(舞月光)回复于 2005-08-22 09:51:27 得分 0
shoulders(Developer),ie后退只是一个对客户端cache的操作,而与服务器端无关,我觉得用session根本无法控制ie的后退功能,应为ie后退只是简单的将客户端cache中的页面取出,好像并不再判断session吧?
Top
14 楼leonyuann(舞月光)回复于 2005-08-23 14:08:48 得分 0
我想问一下,filter是线程安全的吗?是否需要自己在doFilter中控制线程安全?Top
15 楼samplerain(samplerain)回复于 2005-08-23 16:30:47 得分 0
这些东西你觉得还用我们来考虑么?什么叫框架?如果我们灵机一动想到的就能是重大缺陷...
结贴是一种美德~Top




