常用的struts2的Interceptor拦截器

27 篇文章 0 订阅

 iLife's 博客http://blog.csdn.net/fei1502816 

 

我们可以自定义Interceptor继承com.opensymphony.xwork2.interceptor.AbstractInterceptor,即可定义拦截器:
    拦截器可以与Filter过滤器集合起来使用,Interceptor的配置在struts.xml中配置,可以拦截指定的struts2请求,一般是指.action后缀的请求。

package edu.press.utils;

import javax.servlet.http.*;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import org.apache.struts2.ServletActionContext;

/**
* Interceptors for security
* @author
* @version 1.0
* 
*/
public class AdminInterceptor extends AbstractInterceptor {

    private static final long serialVersionUID = 1L;
    private HttpSession session;

    public String intercept(ActionInvocation invocation) throws Exception {
        session = ServletActionContext.getRequest().getSession(true);
        // 简单的验证会话session是否有指定属性
        if (session.getAttribute("XXXXXXXX") != null) {
            return invocation.invoke(); //权限符合,请求顺利执行
        }
        return Action.LOGIN; //请求未通过,转向LOGIN的result
    }
}

在struts.xml文件中配置:

<package name="press" extends="struts-default">
        <interceptors>
            <interceptor name="adminInterceptor"
                />
            <interceptor-stack name="adminStack">
                <interceptor-ref name="basicStack" />
                <interceptor-ref name="adminInterceptor" />
            </interceptor-stack>
        </interceptors>
        <global-results>
              <result name="login" type="redirect">/login.jsp?err=1</result>
        </global-results>
下边这是我们项目中的定义,拦截了多有继承struts-defult的package里的Action
<package name="struts-estone" extends="struts-default"> 
     <interceptors>
            <interceptor name="authority" class="com.estone.www.kepuoa.admin.action.interceptor.AuthorityInterceptor"/>
            <interceptor-stack name="auctionStack">
                <interceptor-ref name="defaultStack"/>
                <interceptor-ref name="authority"/>
            </interceptor-stack>
  </interceptors>
        <default-interceptor-ref name="auctionStack"/>
  <global-results>
   <!-- 下面定义的结果对所有的Action都有效 -->
   <result name="login" type="redirect">/forword.jsp</result>
   <result name="input">/error.jsp</result>
  </global-results>
  <global-exception-mappings>
   <exception-mapping result="input" exception="java.lang.Exception"></exception-mapping>
  </global-exception-mappings>
 </package> 
 
对于需要拦截的action,可按照如下例子:
<action name="uploadResource" method="upload">
            <interceptor-ref name="adminStack"/>
            <result name="success" type="redirect">XXXXXXXXXXX</result>
            <result name="input">XXXXXXXXXXXXXXXX</result>
 </action>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值