struts2拦截器的配置

  struts2拦截器可以拦截一些请求,比如用户没登陆就想访问某个页面,比如用户没有某个页面的访问权限,却发送访问请求,这些都是要被拦截下来的,基于这些需求,我研究了一下struts2的拦截器。

  要使用拦截器,首先需要在struts.xml中配置,配置文件如下:

    

        

                
                        
                        
                                
                                
                        
                

                
                        /WEB-INF/index/index.jsp
                

                

                        
                        
                                mResult
                        
                        /WEB-INF/index/index.jsp
                        
                        
                        
                

                
                        
                                mResult

值得注意的是,定义的拦截器栈名和interceptor-stack的name必须保持一致。

注意:

<default-interceptor-ref name="publicLoginStack"/>

这段代码的作用是在整个package中的所有action,不管有没有写调用拦截器的这段代码:

<interceptor-ref name="publicLoginStack" />

都会默认调用拦截器,所以当有多个action时,需要手动添加上面这句代码,并且删除掉

<default-interceptor-ref name="publicLoginStack"/>

配置好了后,我们需要写一个interceptor类,来处理用户访问的请求(允许访问还是不允许等),这个类即上面<interceptor>的 class属性中的LoginInterceptor.java:

com.arche.alderman.Interceptor;

com.arche.alderman.constant.RequestInteractionString;
com.arche.alderman.constant.ServerCommonString;
com.arche.alderman.mvc.pub.vo.UserLoginInfo;
com.opensymphony.xwork2.ActionInvocation;
;
java.util.Map;

LoginInterceptor {
    String intercept(ActionInvocation actionInvocation) Exception {

        String name = actionInvocation.getInvocationContext().getName();
        (name.equals()) {
            actionInvocation.invoke();
        } {
            Map session = actionInvocation.getInvocationContext().getSession();
            (== session || session.isEmpty()) {
                ServerCommonString.;
            } {
                UserLoginInfo userLoginInfo = (UserLoginInfo) session.get(RequestInteractionString.);
                (== userLoginInfo){
                    ServerCommonString.;
                }{
                    (!= userLoginInfo.getUserId() || != userLoginInfo.getUserName() || != userLoginInfo.getUserType()) {
                        actionInvocation.invoke();
                    } {
                        ServerCommonString.;
                    }
                }

            }
        }
    }
}


需要特别注意的是,这个类要继承AbstractInterceptor类,然后重写interceptor()方法。

大概就是这些,挺简单的!

转载于:https://my.oschina.net/xiaoyuHe/blog/410688

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值