拦截器

java里的拦截器是动态拦截Action调用的对象。它运行在action对象创建之后,action的方法使用之前执行。在action方法执行之前执行拦截器,执行过程使用aop思想。执行多个拦截器时使用责任链设计模式。

自定义拦截器代码

import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;


public class PrivilegeInterceptor extends MethodFilterInterceptor{

    @Override
    protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
        // 判断是否登录,如果登录,放行,没有登录,跳转到登录页面.
        AdminUser adminUser = (AdminUser) ServletActionContext.getRequest()
                .getSession().getAttribute("existAdminUser");
        if(adminUser != null){
            // 已经登录过
            return actionInvocation.invoke();
        }else{
            // 跳转到登录页面:
            ActionSupport support = (ActionSupport) actionInvocation.getAction();
            support.addActionError("您还没有登录!没有权限访问!");
            return ActionSupport.LOGIN;
        }
    }

}

struts.xml中配置

<package name="xx" extends="struts-default" namespace="/">
    <interceptors>
        <interceptor name="自定义拦截器名字" class="自定义拦截器全路径"></interceptor>
    </interceptors>

  <!-- 在要使用拦截器的action中配置 -->
    <action name="adminUser_*" class="action全路径或spring中配置的名字" method="{1}">
            <result name="XXXXX">/XXX/XX.jsp</result>
            <interceptor-ref name="自定义拦截器名字"></interceptor-ref>
        <!-- 默认拦截器还要使用 -->
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
</package>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值