请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。
ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。
请求流程:
1、客户端发送请求
2、请求先通过ActionContextCleanUp-->FilterDispatcher
3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,这儿已经转到它的Delegate--Dispatcher来执行
5、ActionProxy根据ActionMapping和ConfigurationManager找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用
8、Action执行完毕,ActionInvocation创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。添加PreResultListener可以在Interceptor中实现,不知道其它还有什么方式?
部分类介绍:
ActionMapper
ActionMapper其实是HttpServletRequest和Action调用请求的一个映射,它屏蔽了Action对于Request等java Servlet类的依赖。Struts2中它的默认实现类是DefaultActionMapper,ActionMapper很大的用处可以根据自己的需要来设计url格式,它自己也有Restful的实现,具体可以参考文档的docs\actionmapper.html。
ActionProxy&ActionInvocation
Action的一个代理,由ActionProxyFactory创建,它本身不包括Action实例,默认实现DefaultActionProxy是由ActionInvocation持有Action实例。ActionProxy作用是如何取得Action,无论是本地还是远程。而ActionInvocation的作用是如何执行Action,拦截器的功能就是在ActionInvocation中实现的。
ConfigurationProvider&Configuration
ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是尤其实现类XmlConfigurationProvider及其子类StrutsXmlConfigurationProvider来解析,
Trackback: http://www.blogjava.net/myyate/articles/Struts2_source_java.html
- 大小: 44.8 KB
分享到:
相关推荐
在了解Struts程序的执行流程之前,我们需要首先理解几个核心概念: 1. ActionServlet:是Struts框架中的控制器,负责接收用户请求,调用Action的execute()方法处理请求,并根据返回的ActionForward对象进行页面跳转...
以下是Struts2与Struts1.2在关键点上的对比和Struts2的执行流程概述: 1. **Action类的设计**: - 在Struts1中,Action类需要继承自抽象基类,这导致了面向抽象类编程而非接口编程,限制了灵活性。 - Struts2则...
在Struts2中,请求的处理流程涉及多个组件和步骤,确保了请求的正确路由、业务逻辑的执行以及响应的生成。以下是Struts2请求处理的详细分析: 1. **初始化请求**:客户端发起一个HTTP请求到Servlet容器,如Tomcat或...
一个请求在Struts 2框架中的处理大概分为以下几个步骤。 客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...
在深入理解Struts2的工作流程之前,我们需要先了解一些基本概念。 1. **MVC模式**: MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责业务逻辑,视图负责显示...
在深入探讨Struts2的工作流程之前,我们先了解一下MVC模式的基本概念。MVC模式将应用逻辑分隔为三个部分:模型(Model)处理业务逻辑,视图(View)负责展示数据,控制器(Controller)协调用户输入和模型间的交互。...
在Struts 1.2.x中,请求处理流程是整个框架的核心部分,它涉及到了从用户发起请求到服务器响应的完整过程。下面将详细解释这个流程。 1. **请求开始**: 当用户通过浏览器向服务器发送HTTP请求时,请求通常会指向一...
面试中经常询问Struts2的执行流程,因为理解这一流程有助于开发者深入掌握其工作原理,从而更好地设计和调试应用。以下是Struts2执行流程的详细解析: 1. **Web.xml部署描述符**: 在Struts2应用启动时,Web容器...
总之,"Struts2详细分类流程API文档"涵盖了Struts2框架的核心流程和API,包括Action、Interceptor、Result的使用,以及Struts2标签库和OGNL等重要概念。开发者可以通过这份文档深入理解Struts2的工作原理,提高开发...
Struts2的核心过滤器是`FilterDispatcher`,它负责整个请求/响应的处理流程。在`web.xml`中配置过滤器的顺序非常重要,因为它们会按照配置的顺序依次执行。例如,下面展示了如何配置字符编码过滤器和Struts2过滤器:...
综上所述,Struts1的工作流程主要包括用户请求的接收、请求的解析、ActionForm的创建与验证、Action的执行以及结果的呈现。这一流程清晰地展示了Struts1如何实现MVC设计模式,帮助开发者更好地组织代码结构,提高...
9. **过滤器回溯**:在响应被构建并发送回客户端之前,过滤器链会逆序执行,执行完后,响应被返回给客户端,完成整个请求处理流程。 总的来说,Struts2的执行原理是通过过滤器链、ActionMapper、ActionProxy、...
在本文中,我们将深入探讨Struts2的运行流程,了解它是如何处理用户的请求并协调各个组件来实现业务逻辑和视图展示的。 首先,让我们回顾一下在HelloWorld示例中所涉及的基本步骤: 1. 在`web.xml`配置文件中,...
这个框架的工作流程简化了与Struts1相比的操作,更接近WebWork的设计,因此Struts2可视为WebWork的升级版。 在Struts2框架中,FilterDispatcher是核心控制器,它负责处理HTTP请求并控制应用程序的行为。当客户端...
`ActionInvocation`对象是执行流程的核心,它会按照配置的顺序执行拦截器、Action和Result。 在单元测试中,Struts2提供了一个名为`StrutsTestCase`的基类,允许开发者直接通过URL获取`ActionProxy`。这样,我们就...
b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...
如果URL映射与Struts2配置文件中的Action配置相匹配,请求将被转发给Struts2框架。 2. **过滤器Dispatcher初始化**:在请求到达Action之前,它会通过一系列过滤器,其中最重要的是`StrutsPrepareAndExecuteFilter`...
在深入理解Struts程序的执行流程前,我们需要了解一些基本概念。 1. **ActionServlet**: Struts的核心组件,是一个Servlet,作为整个框架的总控制器。它在`web.xml`中被配置为过滤所有以`.do`结尾的请求,并负责...