读书人

strust2拦截器处置Session超时

发布时间: 2012-09-16 17:33:16 作者: rapoo

strust2拦截器处理Session超时

?当用户登陆后,session超时后则返回到登陆页面重新登陆。

?

为了方便测试,修改session的有效时间

<session-config><session-timeout>1</session-timeout></session-config>

?

?

自己定义一个拦截器

package com.zrwt.sjkd.tools;import java.util.Map;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import com.sun.org.apache.xerces.internal.impl.Constants;import com.zrwt.sjkd.action.LoginAction;public class SessionIterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invocation) throws Exception {        ActionContext ctx = ActionContext.getContext();           Map session = ctx.getSession();           Action action = (Action) invocation.getAction();           if (action instanceof LoginAction) {           //上面的判断是为了过滤登录的Action,如果不判断,登录的Action也会拦截,导致你永远无法登录            return invocation.invoke();           }           String userName = (String) session.get("staffId");           if (userName == null) {               return "index";           } else {               return invocation.invoke();           }       }   }

?

配置struts.xml文件

<!-- 定义一个拦截器 -->           <interceptors>                          <interceptor name="sessionout"   />                   <interceptor-ref name="sessionout"/>               </interceptor-stack>           </interceptors>   <default-interceptor-ref name="sjkd" />//对sjkd包下的所有Action拦截配置全局变量<global-results><result name="index">/index.jsp</result></global-results>

??

这样配置过后就会起作用了,等你一分钟不对系统做任何操作,当你操作系统的时候,系统会自动跳转到登录页面

读书人网 >软件架构设计

热点推荐