Struts2自定义拦截器实例—Session超时的处理

本文介绍了如何在Struts2中创建一个自定义拦截器SessionIterceptor来处理Session超时问题。通过配置web.xml设置Session超时时间,并在SessionIterceptor中检查USER_NAME是否存在来判断Session是否失效,若失效则重定向到登录页面。
摘要由CSDN通过智能技术生成
 struts2.2.3
验证内容:当用户登陆后,session超时后则返回到登陆页面重新登陆。

有些文件参考
Struts2自定义拦截器实例—登陆权限验证


web.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
       <filter>
              <filter-name>struts2</filter-name>
              <filter-class>
                   org.apache.struts2.dispatcher.FilterDispatcher 
              </filter-class>
       </filter>
       <filter-mapping>
              <filter-name>struts2</filter-name>
              <url-pattern>/*</url-pattern>
       </filter-mapping>

      <!--设置超时时间,1代表1分钟--->     

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

SessionIterceptor.java 文件内容如下:

package net.mtk.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 net.mtk.action.loginAction;

public class SessionIterceptor extends AbstractInterceptor {

 @Override
 public String intercept(ActionInvocation actionInvocation) throws Exception {
  ActionContext ctx = ActionContext.getContext();
  Map session = ctx.getSession();
  Action action = (Action) actionInvocation.getAction();
  if (action instanceof loginAction) {
   return actionInvocation.invoke();
  }
  String userName = (String) session.get("USER_NAME");
  if (userName == null) {
   return Action.LOGIN;
  } else {
   return actionInvocation.invoke();
  }
 }
}

struts.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.ui.theme" value="simple" />
 <constant name="struts.ui.templateDir" value="template" />
 <constant name="struts.ui.templateSuffix" value="ftl" />
 
       <package name="struts2" extends="struts-default"> 
           <interceptors> 
             <interceptor name="authority" 
                  class="net.mtk.tools.LoginInterceptor"> 
                 </interceptor>
                 <interceptor name="sessionout" 
                class="net.mtk.tools.SessionIterceptor">
                    </interceptor>
                 <interceptor-stack name="mydefault"> 
                   <interceptor-ref name="defaultStack" /> 
                   <interceptor-ref name="authority" />
                   <interceptor-ref name="sessionout" /> 
              </interceptor-stack> 
           </interceptors>
          
           <global-results> 
            <!-- 当返回login视图名时,转入/login.jsp页面 --> 
                <result name="login">/login2.jsp</result> 
           </global-results>
          
              <action name="login" class="net.mtk.action.loginAction">
                     <result name="success">/welcome.jsp</result>
                     <result name="input">/login2.jsp</result>
                     <result name="error">/login2.jsp</result>
              </action>
             <action name="show" class="net.mtk.action.ShowAction"> 
              <result name="success">/show.jsp</result> 
            <!-- 使用此拦截器 --> 
              <interceptor-ref name="mydefault" />      
           </action> 
              <action name="sho" class="net.mtk.action.shoAction"> 
              <result name="success">/sho.jsp</result> 
            <!-- 使用此拦截器 --> 
              <interceptor-ref name="mydefault" /> 
           </action>
       </package>
</struts>

需要新加的内容已用红色标出,其它缺少文件见上面链接,今天会的第二点东东,加油!奋斗

感谢:http://blog.csdn.net/java_cxrs/article/details/5519743  的主人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值