登陆拦截器,iframe下跳父页面

来源:互联网 发布:照片整理软件 编辑:程序博客网 时间:2024/04/30 04:57
需求:session超时时,返回登录页面,由于页面嵌套在iframe下,因此要跳转到登录页面的父页面,但是首页,登录页面等不需要进行跳转 实现:java文件:SessionIterceptor.java import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class SessionIterceptor extends AbstractInterceptor { private static final long serialVersionUID = 7579862236766378267L;public String intercept(ActionInvocation invocation) throws Exception {   ActionContext ctx=invocation.getInvocationContext();         String user=(String)ctx.getSession().get("accountId");if(user!=null){          return invocation.invoke();                   }//如果超时,返回提示页面         return "loginPage";}}=========================================================================配置文件:struts.xml目前此文件包含3个package:1、iterceptor,定义了session超时的拦截器2、noIterceptor,以后session超时不需要做处理的页面配置到此包下3、nscloud,所有session超时需要跳转到登录页面的页面配置到此包下 <!-- session超时拦截器 --> <package name="iterceptor" namespace="/" extends="struts-default">  <interceptors>            <!-- 自定义拦截器 -->            <interceptor name="permission" class="com.neusoft.common.action.SessionIterceptor" />            <!-- 配制默许的拦截器到拦截器栈 -->            <interceptor-stack name="permissionStack">                <!-- 此处先后顺序没影响-->                <interceptor-ref name="permission" />                <interceptor-ref name="defaultStack" />            </interceptor-stack>        </interceptors>        <!-- 配置默认的拦截器 -->        <default-interceptor-ref name="permissionStack" />        <!-- 全局变量,超时返回登录页面 -->        <global-results>            <result name="loginPage">/pages/common/jsp/session.jsp</result>        </global-results>        <action name="*Action" class="com.neusoft.nsc.common.action.CommonAction" method="{1}">            <!-- 超时返回登录页面 -->            <result name="loginPage">/pages/nsc/login/login.jsp</result>        </action> </package>  <!-- session超时不需要返回登录页面的配置文件 --> <package  name="noIterceptor" namespace="/" extends="struts-default"> </package>  <!-- session超时返回登录页面的配置文件 --> <package name="nscloud" namespace="/" extends="iterceptor"> </package> ======================================================================================由于页面嵌套在iframe下,跳转时需要跳转到其父页面,因此加个中间的jsp,拦截器配置跳转到此页面,再由此页面跳转到登录页面。session.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"%><% String path = request.getContextPath(); String basePath = request.getScheme() + "://"   + request.getServerName() + ":" + request.getServerPort()   + path + "/";%><html> <head>  <script type="text/javascript">   window.top.location.href="<%=basePath%>pages/nsc/login/login.jsp";  </script> </head></html>

0 0
原创粉丝点击