`
younglibin
  • 浏览: 1210817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2中的拦截器的内部结构

阅读更多

让我们再来回顾一下之前我们曾经用过的一张Action LifeCycle的图:



图中,我们可以发现,Struts2的Interceptor一层一层,把Action包裹在最里面。这样的结构,大概有以下一些特点:

1. 整个结构就如同一个堆栈,除了Action以外,堆栈中的其他元素是Interceptor

2. Action位于堆栈的底部。由于堆栈"先进后出"的特性,如果我们试图把Action拿出来执行,我们必须首先把位于Action上端的Interceptor拿出来执行。这样,整个执行就形成了一个递归调用

3. 每个位于堆栈中的Interceptor,除了需要完成它自身的逻辑,还需要完成一个特殊的执行职责。这个执行职责有3种选择:

1) 中止整个执行,直接返回一个字符串作为resultCode

2) 通过递归调用负责调用堆栈中下一个Interceptor的执行

3) 如果在堆栈内已经不存在任何的Interceptor,调用Action


Struts2的拦截器结构的设计,实际上是一个典型的责任链模式的应用。首先将整个执行划分成若干相同类型的元素,每个元素具备不同的逻辑责任,并将他们纳入到一个链式的数据结构中(我们可以把堆栈结构也看作是一个递归的链式结构),而每个元素又有责任负责链式结构中下一个元素的执行调用。

这样的设计,从代码重构的角度来看,实际上是将一个复杂的系统,分而治之,从而使得每个部分的逻辑能够高度重用并具备高度可扩展性。所以,Interceptor结构实在是Struts2/Xwork设计中的精华之笔。

1
0
分享到:
评论

相关推荐

    struts拦截器防止未登陆访问内部系统

    - 全局转向配置:在拦截器内部,通过`returnAction.LOGIN`指令触发转向流程,查找`struts.xml`中配置的全局转向配置,以实现统一的登录失败处理策略。 #### 结论 通过Struts2的拦截器机制,可以高效地实现登录验证...

    struts2完整例子

    在Struts2中,Action类扮演控制器角色,处理用户请求;结果映射决定哪个JSP页面作为视图展示;模型则通常由业务服务和数据访问对象组成。 2. **Action类**:Action类是Struts2的核心组件,负责接收请求、处理业务...

    struts1实现拦截所用的jar包

    在Struts1中,拦截器(Interceptor)是实现业务逻辑与表现层解耦的重要组件,它允许在动作执行前后插入额外的功能,比如日志记录、事务管理、权限控制等。 标题中提到的"struts1实现拦截所用的jar包"主要涉及以下几...

    struts 2完全学习手册

    3. **掌握Struts 2的基本结构**:从Action、拦截器、配置文件等方面入手,逐步深入框架内部。 4. **实践项目开发**:通过实际的项目开发来加深对Struts 2的理解,同时也能积累宝贵的实战经验。 5. **学习最佳实践**...

    ·Struts2配置文件介绍 超级详细

    - **Interceptor**:在`package`元素内部,可以定义拦截器或引用拦截器堆栈,拦截器是Struts2中非常重要的组件,用于在Action执行前后进行一系列的前置和后置处理操作,比如登录验证、数据校验等。 - **Result ...

    struts2框架源码

    通过对Struts2源码的深入研究,开发者可以更好地理解其内部工作原理,从而优化应用性能,解决实际问题,以及设计出更符合框架精神的代码结构。同时,这也为面试中展示自己的技术深度和问题解决能力提供了有力的支持...

    IBM-struts2内部培训资料

    3. **第三章:struts2配置详解**:详细解析XML配置文件(struts.xml)的结构和用法,包括Action配置、结果映射、拦截器栈配置等,同时也会涉及动态方法调用和注解配置。 4. **第四章:struts2中的OGNL**:OGNL...

    Struts 2的源码

    拦截器是Struts 2中非常重要的特性,它们在Action执行前后执行,可以实现如日志记录、事务管理、权限验证等功能。通过自定义拦截器,开发者可以扩展框架功能。 3. **配置文件** `struts-default.xml`是Struts 2的...

    struts2 例子和包

    3. **Interceptor(拦截器)**:拦截器是Struts2中的一个重要特性,它可以拦截Action的执行流程,实现如日志、权限验证、事务管理等通用功能。 4. **Result**:Action执行后,会返回一个Result,Result负责将控制权...

    Struts2-2.2.1

    5. **值栈(Value Stack)**:值栈是Struts2中的数据存储结构,它管理Action的属性值,可以方便地将数据传递给视图层。 6. **结果类型(Result Types)**:Struts2支持多种结果类型,如JSP、FreeMarker、 Velocity...

    struts2与webwork2

    - **包结构**:Struts2对WebWork2的包结构进行了重新组织,将其纳入到Struts的命名空间下,这不仅仅是简单的名称更改,更是为了统一框架内部结构,便于开发者理解和使用。 - **社区与生态**:Struts2凭借其更广泛的...

    struts2中异常处理(demo)

    在Struts2中,异常处理是一项重要的功能,它确保了应用程序的健壮性和用户友好的错误反馈。这篇博客文章“Struts2中异常处理(demo)”可能详细介绍了如何在Struts2框架下优雅地处理程序中的异常。 在Java Web开发...

    Struts2入门V3.0.pdf

    - 在Struts2中,Action类是处理用户请求的核心,每个Action对应一个特定的业务操作。 - Action类需要实现`com.opensymphony.xwork2.ActionSupport`接口,通过重写`execute()`方法来定义业务逻辑。 4. **配置文件*...

    Struts2简介与入门

    WebWork框架则被认为是设计更为先进的框架,引入了拦截器机制和OGNL(Object-Graph Navigation Language,对象图导航语言)表达式语言。 Struts2的出现是为了结合Struts1和WebWork的技术优势,形成了一个全新的框架...

    Struts2中文教程文档

    - Interceptors(拦截器):介绍Struts2拦截器的工作原理和自定义拦截器的编写。 - Actions和Results:Action类的编写,Result的配置及使用,以及如何将Action和Result关联。 - 配置文件struts.xml:详解配置文件的...

    struts2-core-2.0.12.jar

    Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...

    Struts2+Freemark

    6. 在Struts2的拦截器链中添加自定义拦截器,实现特定功能,如登录验证。 7. 测试应用,确保请求能正确路由到Action,FreeMarker模板能正确渲染数据。 在实际开发中,这种组合提供了良好的分离关注点,让开发者可以...

    Struts2教程DOC版

    2. **Action类**:在Struts2中,Action类是控制器的主要实现,负责处理用户请求并调用模型层进行业务处理。每个Action类对应一个URL,用于执行特定业务操作。 3. **配置文件**:Struts2的配置文件通常为struts.xml...

    Struts2+技术内幕——深入解析Struts2架构设计与实现原理

    在深入解析Struts2的章节中,你可能会了解到如何创建自定义拦截器以及如何将它们链式组合,以实现复杂的业务逻辑。 其次,Struts2的Action是业务逻辑的主要载体。每个Action对应一个特定的用户请求,并负责处理该...

    Struts2 技术内幕-深入解析Struts2架构设计与实现原理

    2. **拦截器链**:在Struts2中,请求会经过一系列预定义和自定义的拦截器,这些拦截器按照配置的顺序执行,提供了如验证、日志、事务管理等功能。拦截器是Struts2灵活性的关键,允许开发者插入新的行为而无需修改...

Global site tag (gtag.js) - Google Analytics