Struts2 Interceptor接口:拦截器

  • 内容
  • 评论
  • 相关

拦截器(Interceptor)是 Struts2 框架中一个非常重要的核心对象,它可以动态增强 Action 对象的功能。在 Struts2 框架中,很多重要的功能都是通过拦截器实现的。比如,在使用 Struts2 框架中,我们发现 Struts2 与 Servlet API 进行解耦,Action 对请求的处理不依赖于 Servlet API,但 Struts2 的 Action 却具有更加强大的请求处理功能,那么,这个功能的实现就是拦截器对 Action 的增强,可见拦截器的重要性。此外,Struts2 框架中的表单重负提交、对象类型转换、文件上传以及前面所学习的 ModelDriven 的操作,都离不开拦截器幕后的操作,Struts2 的拦截器的处理机制是 Struts2 框架的核心。

拦截器动态地作用于 Action 与 Result 之间,它可以动态地在 Action 与 Result 中加入新功能。

语法:

在 Struts2 API 中,存在一个名为 com.opensymphony.xwork2.interceptor 的包,此包中的对象是 Struts2 内置的一些拦截器对象,它们具有不同的功能。在这些对象中,Interceptor 接口是 Struts2 框架中定义的拦截器对象,其他的拦截器都直接或间接地实现于此接口。

说明:Interceptor 是 Struts2 框架中定义的拦截器对象,它是一个接口,无论是 Struts2 内置的拦截器对象,还是自定义的拦截器都需要直接或间接地实现于此接口。

Struts2 API 中定义该接口的源代码如下:

public interface Interceptor extends Serializable{
  void destroy();
  void init();
  String intercept(ActionInvocation invocation)throws Exception;
}

参数说明:

  • destroy():指示拦截器的生命周期结束,它在拦截器被销毁前调用,用于释放拦截器在初始化时所占用的一些资源。
  • init():用于对拦截器进行一些初始化操作,此方法在拦截器被实例化后,intercept() 方法执行前调用。
  • intercept():是拦截器中的主要方法,用于执行 Action 对象中的请求处理方法以及在 Action 的前前后后进行一些操作,动态地增强 Action 的功能。

说明:只有调用了intercept()方法中的invocation参数的invoke()方法,才可以执行Action对象中的请求处理方法。

虽然 Struts2 提供了拦截器对象 Interceptor,但此对象是一个接口,如果通过此接口创建拦截器对象,就需要实现 Interceptor 提供的三个方法,而在实际的开发中,主要用到的方法只有 intercept() 方法,如果没有用到 init() 方法与 destroy() 方法也需要对其进行空实现,这种创建拦截器的方式似乎有些不太方便。

为了简化程序的开发,创建拦截器对象也可以通过 Struts2 API 中的 AbstractInterceptor 对象进行创建,它与 Interceptor 的关系如图所示。


 

本文标题:Struts2 Interceptor接口:拦截器

本文地址:https://www.hosteonscn.com/6392.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注