`
海角七号
  • 浏览: 17877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2的请求流程与源码分析

阅读更多

      Apache  Struts2是一个全新的、非常先进的Web应用程序框架,Struts2不只是原来Struts1框架的一个新版本,它基于备受崇敬的OpenSymphony WebWork框架,是一个全新的框架,Struts2实现MVC设计模式 的第二代Web应用程序架构,它建立在最佳实践以及被证明有效且呗社区广泛接受的设计模式 之上。

     使用Struts2框架时,了解Struts2的工作流程很重要,Struts2的请求流程如下:

  1. 客户端初始化一个指向Servlet容器的请求;
  2. 根据web.xml配置,请求首先经过ActionContextCleanUp过滤器,该过滤器为可选的,这个过滤器对于Struts2和其他框架的整合很有帮助,主要清理当前线程中的Actioncontext和Dispatcher;
  3. 请求经过插件过滤器,如SitMesh等过滤器;
  4. 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在方法中,询问ActionMapper来决定这个请求是否需要调用某个Action;
  5. 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy对象,将请求交给ActionProxy对象继续处理;
  6. ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类;
  7. ActionProxy对象创建时,会同时创建一个ActionInvocation实例;
  8. ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Interceptor)的调用;
  9. 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result,Result通常是一个需要被表示的Jsp等,也可能是另一个Action链;
  10. 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现;
  11. 根据Result对象信息,生成用户响应信息response,在生成响应过程中,可以使用Struts框架中继承的标签,在此过程中仍会涉及到ActionMapper。

       源码分析,请参考http://developer.51cto.com/art/201208/354943.htm

0
0
分享到:
评论

相关推荐

    struts2 源码分析

    Struts2 源码分析 Struts2 是一个基于MVC 模式的Web 应用程序框架,它的源码分析可以帮助我们更好地理解框架的内部机制和工作流程。下面是Struts2 源码分析的相关知识点: 1. Struts2 架构图 Struts2 的架构图...

    Struts2请求处理流程及源码分析[整理].pdf

    以上就是Struts2请求处理的基本流程和源码分析。理解这一流程有助于开发者更好地调试和优化Struts2应用,以及在遇到问题时能快速定位和解决。通过深入源码,开发者可以定制化Struts2的行为,满足特定的应用场景需求...

    struts2部分源码分析

    总的来说,Struts2的源码分析涉及Action的创建与执行、Interceptor的调用链、FilterDispatcher的请求调度以及Result的展示机制。通过对这些关键组件的深入理解和代码研究,开发者可以更好地掌握Struts2框架,提高...

    Struts2源码分析

    总的来说,Struts2的源码分析可以帮助开发者深入理解其内部机制,包括请求处理流程、拦截器的运作方式以及视图组件的实现。这有助于提高应用的可维护性,优化性能,并使开发者能够更好地定制和扩展框架。对于熟悉...

    struts2源码分析总结

    本文将深入探讨Struts2的源码分析,特别是关于StrutsPrepareAndExecuteFilter的初始化过程,这是Struts2的核心组件之一,负责处理HTTP请求。 首先,我们来看`StrutsPrepareAndExecuteFilter`的初始化。这个过滤器...

    struts2完全学习手册源码

    对于初学者,这是一条学习和掌握Struts2的宝贵途径,而对于经验丰富的开发者,源码分析能帮助他们更高效地定位和解决问题。因此,"struts2完全学习手册源码"是提升Java Web开发技能的绝佳资源。

    struts2工作原理及源码分析学习笔记

    3. **Struts2请求流程**: - 客户端发起请求。 - 请求经过ActionContextCleanUp过滤器,清理上下文。 - FilterDispatcher利用ActionMapper确定Action。 - ActionProxy根据ActionMapping和ConfigurationManager...

    Struts2请求处理流程及源码分析

    b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...

    Struts2源码阅读

    在请求流程中,`ActionInvocation`会按照预定义的顺序调用拦截器,然后执行Action本身。Action执行完毕后,`ActionInvocation`会创建并返回一个`Result`。如果需要在返回结果前执行某些操作,可以通过实现`...

    struts2工作流程

    接下来,我们详细分析Struts2的工作流程: 1. **请求接收**: 当用户在浏览器中发送HTTP请求到服务器时,Struts2框架首先通过一个前端控制器(Front Controller),即`StrutsPrepareAndExecuteFilter`,拦截这个...

    Struts2权威指南 加源码

    源码分析是深入学习Struts2的关键,它可以帮助我们理解框架内部的工作流程。例如,`ActionInvocation`接口代表了一个动作的执行过程,`InterceptorStack`类负责调用拦截器链,而`Result`接口则定义了结果的处理方式...

    struts2 相关教程和源码分析(集合)

    分析Struts2的源码可以帮助我们理解其内部工作流程,例如Filter Dispatcher如何分发请求,ActionInvocation如何执行Action,Interceptor链如何工作等。通过源码阅读,可以提高对框架的深度理解和定制能力。 7. **...

    struts2 源码解读

    源码分析是提升编程技能和解决问题的关键,特别是对于复杂的框架如Struts2,理解其内部工作原理能够帮助我们优化应用性能,修复潜在问题,并进行定制化开发。 首先,Struts2的核心组件包括Action、Result、...

    struts2框架源码

    了解这些基本概念后,深入源码分析可以发现以下关键技术点: 1. **Dispatcher Servlet**:Struts2的核心控制器,负责接收HTTP请求,通过ActionMapper找到对应的Action,然后调用ActionInvocation进行拦截器链的执行...

    struts2-core-2.0.11源码

    8. **请求处理(Request Handling)**:`org.apache.struts2.dispatcher.ng.filter`包中的`StrutsPrepareAndExecuteFilter`是Struts2与Servlet容器交互的关键,它负责准备请求并执行Action。 9. **类型转换(Type ...

    struts2源代码分析

    尽管Struts2试图保持与Struts1.x的兼容性,但其实现方式和工作流程已经发生了根本变化。 Struts2的核心设计依赖于WebWork,它的主要工作原理是通过拦截器(Interceptor)机制来处理HTTP请求。当一个请求到达服务器...

    Struts 2的源码

    通过对`org`目录下源码的分析,我们可以看到Struts 2的内部工作机制,包括Action的执行流程、拦截器链的构建、配置解析的过程等,这有助于我们更好地优化和调试基于Struts 2的应用程序。同时,对于想要为Struts 2...

Global site tag (gtag.js) - Google Analytics