自定义拦截器

1、拦截器的作用
2、怎样定义拦截器?
3、怎样注册拦截器?
4、怎样使用拦截器?
下面我们通过上面的问题来做进一步的讨论:
1、拦截器的作用:在struts2种,其核心的功能之一就是拦截器,拦截器可以用来进行AOP编程,比如权限管理、判断用户有没有登陆等等。
2、定义拦截器:
1、创建一个类,实现com.opensymphony.xwork2.interceptor.Interceptor接口,并覆写里面的intercept方法。
2、这里我拿判断用户是否登陆来做例子,这里的内容主要是判断用户有没有登陆,

//先获取到session里面的user
        Object user=ServletActionContext.getRequest().getSession().getAttribute("user");
        //判断user是否为空
        if(user==null){
        //为空,转向登陆页面
            return "login";
        }else{
        //不为空,转向主页
            return invocation.invoke();

这里的invocation.invoke() 代表struts.xml文件中相关action对应的类所指定方法的返回值。实际上等价于 String result=invocation.invoke().

3、注册拦截器:
1、在对应要拦截的包中注册,其实就是给这个拦截器定义一个名字。代码如下:

        <interceptors>
            <interceptor name="myInterceptor" class="cn.ansel.interceptor.interceptorImpl"></interceptor>
            <interceptor-stack name="myDefaultInceptor">
                <interceptor-ref name="defaultStack"></interceptor-ref>
                <interceptor-ref name="myInterceptor"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

那为什么还要写interceptor-stack呢?因为struts2里面有很多默认使用的拦截器,如果用户有自己定义的拦截器,那么默认的就不起作用了,但是我们自己定义的就只有1个拦截器,那么struts中的其他核心拦截器我们就用不了了,所以我们要把默认的拦截器也加进来,把他们“捆”在一起。
4、使用拦截器:确保以上的步骤无误之后,就是使用拦截器了。
1、在要拦截的action中,定义拦截器的“参照“
2、这个参照,是指上面捆起来的整个包,而不是单单自己定义的拦截器。
代码如下:

<interceptor-ref name="myDefaultInceptor"></interceptor-ref>

以上,就是自定义拦截器的步骤,欢迎纠错和补充!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值