struts2体系结构的核心就是拦截器。

以链式执行,对真正要执行的方法(execute())进行拦截。首先执行Action配置的拦截器,在Action和Result执行之后,拦截器再一次执行(与先前调用相反的顺序),在此链式的执行过程中,任何一个拦截器都可以直接返回,从而终止余下的拦截器、Action及Result的执行。

未完~

================================分割线==============================================================

拦截器运行我们在执行前后插入代码执行。Struts2中的拦截器是一个强有力的工具,他可以为action动态添加输入验证(验证用户的输入是否正确)、

对象组装(将用户输入的数据转换为对象的属性)、权限控制(确保访问中是登录用户)、日志记录(记录action的执行情况)等功能,而不需要修改action。

要为action配置引用的拦截器,首先要在interceptors元素中使用interceptor元素定义拦截器,然后在action元素中使用interceptor-ref元素指定引用的拦截器。interceptor元素有两个必要的属性:name和class,前者指定拦截器的名字,后者指定拦截器的完整类名。

假如我们要为ResourceAction配置两个拦截器logger和security,如下所示

拦截器按照action引用拦截器的顺序执行。

如果一个action需要多个拦截器,一 一引用它们也是一件烦恼的事。我们可以将多个拦截器组合在一起,组成一个拦截器栈,

然后在action中直接引用拦截器栈即可

修改上面的例子,将logger和security拦截器放到拦截器栈中,示例如下:

要注意的是,如果你在一个action钟定义了其他的拦截器引用,那么这个action将不再使用默认的拦截器引用,如下:

如果action想要在默认拦截器引用的基础上添加新的拦截器,那么只能在action中重新配置默认拦截器的引用中的拦截器,

那么上面的例子修改如下:

Struts2提供的默认配置文件struts-default.xml定义了默认的拦截器栈引用,对于多数Web应用程序都是适用的。

至于少数有特殊需求的Web程序,你可以自由组合struts-default.xml中定义拦截器和拦截器栈。

注意:拦截器都是在包中定义的,在一个包中不能引用其他包中定义的拦截器,除非这两个包有继承关系(“子”包可以引用“父”包中的拦截器,反之则不行)

Struts之 拦截器配置 ( Interceptor )的更多相关文章

  1. struts自定义拦截器配置

    配置自己的拦截器可以先参照下系统的拦截器是怎么配置的,首先打开struts-default.xml搜索下interceptor:系统里的拦截器有很多,拦截器都是放在堆栈里的,系统引用的是默认堆栈, & ...

  2. struts自定义拦截器

    第01步:配置web.xml,启动struts框架 <?xml version="1.0" encoding="UTF-8"?> <web-a ...

  3. 2018.12.17 struts.xml 配置自定义拦截器配置

    自定义拦截器有三个步骤哦 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PU ...

  4. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  5. Struts2 拦截器配置以及实现

    @(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...

  6. Struts 2 拦截器

    什么是Struts 2 拦截器  拦截器就是当用户请求后台Action类时在Action的Excute()方法执行前和Result返回魔板试图之后(将页面(数据)发送给浏览器渲染之前)所需要的一些通用 ...

  7. Struts2拦截器配置

    1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AO ...

  8. Struts2-整理笔记(五)拦截器、拦截器配置

    拦截器(Interceptor) 拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 拦截器的优点 简化了Action的实现 ...

  9. java struts学习-拦截器

    引言: Struts2拦截器,每个拦截器类只有一个对象实例,即采用单例模式,所有引用这个拦截器的Action都共享这一拦截器类的实例,因此,在拦截器中如果使用类变量,要注意同步问题. •       ...

随机推荐

  1. Leetcode 114.二叉树展开为链表

    二叉树展开为链表 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 将其展开为: class Solution{ public: void flatten(TreeNode* root){ if ...

  2. 纯JSP实现简单微信开发后台

    %@ page import="java.net.*" % %@ page import="java.math.*" % %@ page import=&quo ...

  3. 校长的收藏(洛谷 U4534)

    题目背景 XS中学的校长喜欢收集手办,家里面都是价值不菲的手办. 校长喜欢给手办们排队并且对于某些些区间内的手办喜爱有加. 现在,校长外出散步(找乐子),你潜入他的房间打算借(偷走)他的手办炫耀一下. ...

  4. 在Myeclipse中拷贝一个web项目,但是tomcat文件夹中没有更新,需要进行修改才能更新。

    1.在Myeclipse中拷贝一个web项目,但是tocat文件夹中没有更新,需要进行修改才能更新. 2.方法:右键这个工程,然后Properties->MyEclipse->Projec ...

  5. vue2的简单Popup (Confirm,Alert)组件

    github:  https://github.com/longfei59418888/vui   (记得给一个 start,以后有一起讨论,各种好组件) demo :http://60.205.20 ...

  6. eclipse下载egit插件,实现代码git同步问题

    1.使用egit后,怎样查看历史log信息? : Team -> Show in history可以查看版本历史提交记录 2.每次代码提交前,先fetch,再merge. 先fetch获得最新代 ...

  7. 【翻译自mos文章】rman 标准版和企业版的兼容性

    rman 标准版和企业版的兼容性 来源于: RMAN Standard and Enterprise Edition Compatibility (文档 ID 730193.1) 适用于: Oracl ...

  8. C++简单版BitSet求解大量数据是否存在莫个数

    #include <iostream> using namespace std; template<int N> class BitSet { public: BitSet() ...

  9. Qt Quick综合实例之文件查看器

    假设你基于Qt SDK 5.3.1来创建一个Qt Quick App项目,项目模板为你准备的main.qml文档的根元素是ApplicationWindow或Window.这次我们就以Applicat ...

  10. java 四种实现延迟加载的方法

    1. 延迟初始化 2. 虚拟代理(virtual proxy) 原文地址:   http://www.oodesign.com/proxy-pattern.html Intent The intent ...