Struts2 拦截器详解(一)

本文介绍了Struts2中拦截器的基本配置方法,包括默认拦截器的使用、自定义拦截器的实现及配置过程,并通过具体示例展示了如何在项目中正确地应用拦截器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拦截器的配置详解:
a) 当执行了自定义拦截器时候,默认拦截器将不会自动加载
b) 默认拦截器:在Struts-default.xml中,配置了默认拦截器。当配置默认拦截器以后,如果不引用拦截器,那么默认的拦截器将起作用。

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

c) 当引用了自定义拦截器后,又想使用struts2提供的拦截器功能,需要手动引用一下
d) 当action应用的拦截器个数比较多时,可以将多个拦截器放入一个拦截器栈中

<interceptors >
            <interceptor name="time" class="cn.xm.interceptor.TimeInterceptor"></interceptor>
            <!-- 拦截器栈  一个拦截器栈可以包含多个拦截器的引用-->
            <interceptor-stack name="mystack">
                <!-- 引用拦截器 -->
            <interceptor-ref name="time"/>
            <!-- 引用默认拦截器 -->
            <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
        </interceptors>

下面是一个登录拦截器的实例:
1、建立登录拦截器的类Logininterceptor(拦截器的实现有两种方式,实现interceptor接口或者继承Abstractinterceptor类)此处选择实现interceptor接口,重写了intercept方法,通过getProxy().getActionName();判断session中是否存在用户登录后的对象,若存在则完成登录验证,否则回到登录界面

package cn.xm.interceptor;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class Logininterceptor implements Interceptor {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void init() {
        // TODO Auto-generated method stub

    }

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        // TODO Auto-generated method stub

        Object obj = invocation.getInvocationContext().getSession().get("user");
        System.out.println(obj);
        if(obj == null) {
            System.out.println("obj = null");
            return Action.LOGIN;
        }
        System.out.println(actionname);
        return invocation.invoke();
    }


}

2、配置struts.xml

 <package name="default" namespace="/" extends="struts-default">
        <!-- 配置拦截器 -->
        <interceptors >

        <interceptor name="logininterceptor" class="cn.xm.interceptor.Logininterceptor">
        </interceptor>

        </interceptors>

        <action name="Hello" class="cn.xm.action.HelloAction">
            <result name = "success">show.jsp</result>
            <!-- 引用拦截器 -->
            <interceptor-ref name="logininterceptor"/>
            <!-- 引用默认拦截器 -->
            <interceptor-ref name="defaultStack"/>
        </action>

    </package>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值