欢迎访问宙启技术站
智能推送

struts2自定义拦截器的示例代码

发布时间:2023-05-14 09:10:42

Struts2拦截器是开发中经常使用的功能,它能够在请求前或请求后进行一些操作,比如数据验证、权限校验等。Struts2框架提供了很多拦截器,但是如果这些拦截器不能满足我们的需求,我们就需要自定义拦截器了。

下面是一个简单的示例代码,展示如何自定义一个拦截器。

1. 创建一个类实现Interceptor接口

在这个示例中,我们创建了一个LoggingInterceptor类,它实现了Interceptor接口。Interceptor接口定义了三个方法,我们需要实现这三个方法。

public class LoggingInterceptor implements Interceptor {

  public void init() {}

  public String intercept(ActionInvocation invocation) throws Exception {

    // 前置拦截

    System.out.println("LoggingInterceptor的前置拦截");

    // 调用Action

    String result = invocation.invoke();

    // 后置拦截

    System.out.println("LoggingInterceptor的后置拦截");

    return result;

  }

  public void destroy() {}

}

2. 在struts.xml文件中配置拦截器

在这个示例中,我们将自定义的LoggingInterceptor拦截器配置在了全局拦截器栈中。全局拦截器栈中的所有拦截器都会对所有的Action进行拦截。

<struts>

  <constant name="struts.devMode" value="true" />

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

    <interceptors>

      <interceptor name="loggingInterceptor" class="com.example.LoggingInterceptor" />

      <interceptor-stack name="defaultStack">

        <interceptor-ref name="loggingInterceptor" />

        <interceptor-ref name="defaultInterceptor" />

      </interceptor-stack>

    </interceptors>

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

    <action name="hello" class="com.example.HelloAction">

      <result name="success">/WEB-INF/jsp/hello.jsp</result>

    </action>

  </package>

</struts>

3. 在Action中测试拦截器

在这个示例中,我们创建了一个HelloAction类,它继承自ActionSupport类。在这个Action中,我们只是简单地返回了一个字符串。

public class HelloAction extends ActionSupport {

  public String execute() throws Exception {

    return SUCCESS;

  }

}

4. 运行程序并观察控制台输出

在运行程序后,我们可以在控制台中看到LoggingInterceptor的前置拦截和后置拦截输出的信息。

总结

自定义拦截器是Struts2框架中常用的功能,通过它可以实现很多自定义的业务逻辑。在本次示例中,我们简单地介绍了如何创建和配置自定义拦截器。但是,实际开发中可能会涉及到更多的问题,比如拦截器之间的顺序、如何在拦截器中传递数据等等。如果你想进一步深入学习Struts2拦截器的知识,建议学习Struts2的官方文档和相关书籍。