Struts2 拦截器 配置IFrame页面跳转

本文介绍了一种解决在Web应用中,当Session失效后,使用iframe导致多个登录页面同时出现的问题。通过在登录页面添加JavaScript代码和创建中间跳转页面,配合Struts框架的全局结果配置,实现单点跳转到登录页面,避免了多窗口重复登录的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客原文:http://hi.baidu.com/kangjun118/item/6056bd22e1af3b012a0f1c6b

我做了一个后台管理, 页面用 table 中嵌入 iframe 做的.

后台首页分3个部分, top.jsp 顶部的页面.   left.jsp 左侧的菜单页面.   right.jsp 右侧显示类容页面.

在left.jsp 中 有一个 iframe: <iframe id="leftMenuFrame" name="leftMenuFrame" src="<%=request.getContextPath() %>/backManage/toLeftJsp.shtml"/>
在right.jsp 中 也有一个 iframe: <iframe id="leftMenuFrame" name="leftMenuFrame" src="<%=request.getContextPath() %>/backManage/toRightJsp.shtml"/>
我在这两个 action 的配置文件中都配置了拦截器.

<package name="backManage" extends="tour" namespace="/backManage">   

    <!-- 到后台左侧页面 -->   

    <action name="toLeftJsp" class="BackManageAction" method="toLeftJsp">   

        <result name="success">/jsp/left.jsp</result>   

        <interceptor-ref name="loginAdminInterceptor"></interceptor-ref>   

        <interceptor-ref name="defaultStack"/>   

    </action>   

<!-- 到后台右侧页面 -->   

    <action name="toRightJsp" class="BackManageAction" method="toRightJsp">   

        <result name="success">/jsp/backRight.jsp</result>   

        <interceptor-ref name="loginAdminInterceptor"></interceptor-ref>   

        <interceptor-ref name="defaultStack"/>   

    </action>   

</package>
View Code

当 session 失效之后再去刷新页面, 于是这两个 action 都跳到登陆页面. 这样就出现了两个登陆页面.

要解决的问题就是在session失效之后, 跳转到登陆页面. 而不是一个页面中出现两个登陆页面.

 

解决办法:

1)在你的login.jsp中,加一段脚本

JScript code
 
if(self.location!=top.location) {  top.location.href=self.location.href;}
View Code

 

2)新建一个中间页面,如下:

relogin.jsp

<html> 

    <head>

    <title></title> 

    <script type="text/javascript"> 

        window.top.location='<%=request.getContextPath()%>';   

    </script>

    </head> 

</html>
View Code

然后,在struts.xml里面配置一个全局结果:

<global-results>   

    <result name="relogin" >/jsp/relogin.jsp</result> 

</global-results> 
View Code

最后,在拦截器中跳转到这个全局结果

转载于:https://www.cnblogs.com/Jodie/p/3170606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值