Struts2学习拦截器

介绍

  1. 拦截器之所以称为拦截器,是因为他可以在Action执行前后拦截调用。

  2. Struts 2 将它的核心功能放到拦截器中实现而不是分散到 Action 中实现, 有利于系统
    的解耦, 使得功能的实现类似于个人电脑的组装, 变成了可插拔的。 需要某个功能就“ 插
    入” 一个拦截器, 不需要某个功能就“ 拔出” 一个拦截器。 你可以任意组合拦截器来为
    Action 提供附加的功能, 而不需要修改 Action 的代码。

  3. 在整个执行过程中, 任何一个拦截器都可以选择直接返回, 从而终止余下的拦截器、 Action 和 Result 的执行。 例如, 当一个未授权的用户访问受保护的资源时,执行身份验证的拦截器可以直接返回。

Struts2自带的拦截器(来自Struts2深入浅出)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果为Action指定了一个拦截器,则系统默认的拦截器栈将会失去作用,导致Struts2无法正常运行,为了继续使用默认拦截器,所以需在配置文件中手动引入了默认拦截器。

拦截器栈

<interceptor-stack>用于定义一个拦截器栈

  • 由于拦截器较多,为了使用和管理的方便,可将多个拦截器组织在一起形成一个拦截器栈,使用拦截器栈可以将多个拦截器作为一个整体来引用。在<interceptor-stack>内使用<interceptor-ref name="拦截器名"/>来引用拦截器
  • 一旦定义了拦截器和拦截栈后,就可以使用这个拦截器或拦截器栈拦截Action,通过<interceptor-ref name="拦截器名"/>可以在Action内使用拦截器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在/struts-default.xml还有很多拦截器栈

拦截器引用

当配置一个包时,可以指定默认拦截器。
<default-interceptor-ref name=“拦截器/拦截栈名字"/>

<default-interceptor-ref…/>元素作为<package…/>元素的子元素使用,为该包下的所有Action配置默认的拦截器。
在这里插入图片描述

每个<package…/>元素只能有一个<default-interceptor-ref…/>子元素,也就是每个包只能指定一个默认拦截器

只有当Action中没有显示应用拦截器时,该Action所在包的默认拦截器才会生效;如果为Action指定了一个拦截器,则系统默认的拦截器栈将会失去作用,导致Struts2无法正常运行,为了继续使用默认拦截器,所以需在配置文件中手动引入了默认拦截器。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40803626/article/details/89363231