Struts2中配置全局拦截器的方法

来源:互联网 发布:数据采集卡驱动 编辑:程序博客网 时间:2024/05/18 03:42

在struts.xml中添加如下配置:

<!-- 配置全局拦截器 -->

<package name="all" extends="struts-default">
        <interceptors>

            <!-- 定义权限控制拦截器 -->
            <interceptor name="authority"
                class="akai.cost.ms.base.AuthInterceptor" />

            <!-- 定义一个包含权限控制的拦截器栈 -->
            <interceptor-stack name="mydefault">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="authority" />
            </interceptor-stack>
        </interceptors>

        <!-- 定义默认拦截器 -->
        <default-interceptor-ref name="mydefault" />
        <!-- 定义全局处理结果 -->
        <global-results>
            <!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
            <result name="login">/login.jsp</result>
        </global-results>

    </package>

使用方法:其他包继承这个包名就可以了

<package name="abc" extends="all" namespace="/">


:拦截器类

package akai.cost.ms.base;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class AuthInterceptor extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation invocation) throws Exception {HttpSession session = ServletActionContext.getRequest().getSession();String userName = (String)session.getAttribute("System_UserName");if(userName == "" || userName == null){//错误,回到登录界面return Action.LOGIN;}else{return invocation.invoke();}}}