在网页编程时,我们经常需要处理,当会话过期时,我们要跳到登陆页面让用户登陆,由于我们可能用到的的的IFrame的的框架,所以我们我登陆页面需要显示在整个页面,而不是一个的的的IFrame中的中,大部分的网友是用下面的代码进行实现的。
在过滤器中写如下代码:
- printWriter out = response.getWriter();
- out.write(“<script> window.parent.location.href ='login.jsp'</ script>” );
我的实现方式是:跟普通过滤器的写法一样,跳到某个行动,让行动决定要跳到的页面,然后在登录页面写上这么一段代码
- < script language = “JavaScript” >
- //判断当前窗口是否有顶级窗口,如果有就让当前的窗口的地址栏发生变化,
- //这样就可以让登陆窗口显示在整个窗口了
- 函数loadTopWindow(){
- if(window.top!= null && window.top.document.URL!= document.URL){
- window.top.location = 文件.URL;
- }
- }
- </ script >
- </ head >
- <! - 在体内的写上的onload事件要调用的方法 - >
- < body onload = “loadTopWindow()” >
两种方式都是用JS进行实现,各有优缺点
第一种方式的缺点的英文要的的的的的Java中写了的的的的的JavaScript代码,这样的代码风格不是很好,优点是编写简单;
第二种方式的缺点是要发送两次请求,在登陆页面比较大的情况下,这个方式确实不太好,好在一般的登录页面都比较简单,优点是易于维护,在写是时候,只要把这么一段代码复制进去就可以了,所以我个人推荐使用第二种方式。
在web.xml文件文件中文件文件中定义会话过期时间:(
注意:若为springboot设置过期时间如下:
bootStrap.properties中添加对默认配置进行更改
server.session.cookie.comment =#注释会话cookie.server.session.cookie.domain
=#会话cookie的
域名.server.session.cookie.http-only =#“HttpOnly”标志为会话
cookie.server.session。 cookie.max-age =#会话cookie的最大年龄(以秒为单位)
server.session.cookie.name =#会话cookie名称
server.session.cookie.path =#会话cookie的路径
server.session.cookie.secure =#“Secure”标志为会话
cookie.server.session.persistent = false#在重新启动之间持续会话数据
server.session.store -dir =#用于存储会话数据的目录
server.session.timeout =#会话超时(秒)(测试的话仅仅添加超时就可以!)
server.session.tracking-模式=#会话跟踪模式(以下一个或多个:“饼干”,“URL”,“SSL”))
- <! - 会话超时定义,单位为分钟 - >
- < session-config >
- < session-timeout > 2 </ session-timeout >
- </ session-config >
用的的的的JavaScript的解决会话过期,跳转到首页并跳出IFRAME
可以在登录页面login.jsp中<head> </ head>中添加如下代码
用的JavaScript的解决会话过期,跳转到首页并跳出IFRAME
可以在登录页面login.jsp中<head> </ head>中添加如下代码
[html] view plain copy
- <script type="text/javascript">
- if (window != top)
- top.location.href = location.href;
- </script>