我做了一个后台管理, 页面用 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>
当 session 失效之后再去刷新页面, 于是这两个 action 都跳到登陆页面. 这样就出现了两个登陆页面.
后台首页分3个部分, top.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">
当 session 失效之后再去刷新页面, 于是这两个 action 都跳到登陆页面. 这样就出现了两个登陆页面.
要解决的问题就是在session失效之后, 跳转到登陆页面. 而不是一个页面中出现两个登陆页面.
解决办法:1)
在你的login.jsp中,加一段脚本
-
JScript code
- if(self.location!=top.location) { top.location.href=self.location.href;}
2)
新建一个中间页面,如下:relogin.jsp
<html>
<head>
<title></title>
<script type="text/javascript">
window.top.location='<%=request.getContextPath()%>';
</head>
</html>,
然后,在struts.xml里面配置一个全局结果:
<global-results>
/jsp/relogin.jsp
</global-results>
最后,在拦截器中跳转到这个全局结果
本文详细介绍了如何解决在Session失效后,页面中出现两个登录页面的问题,通过在login.jsp中添加特定脚本和新建全局结果页面relogin.jsp,实现了正确的跳转逻辑。
139

被折叠的 条评论
为什么被折叠?



