Struts2源码阅读(一)_Struts2框架流程概述 .
2013-01-06 19:46
399 查看
1. Struts2架构图
请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。
ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。
2. Struts2部分类介绍
这部分从Struts2参考文档中翻译就可以了。
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来解析。
3. Struts2请求流程
1、客户端提起一个(HttpServletRequest)请求,如在浏览器中输入”http://localhost:8080/Struts2/add.action”就是提起一个(HttpServletRequest)请求
2、请求被提交到一系列(主要是三层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意这里是有顺序的,先ActionContextCleanUp,再其他过滤器(SiteMesh等)、最后到FilterDispatcher。
3、FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类.,如上文的“add.action”
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可
能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版
资料:
/article/7910320.html
http://aumy2008.blogbus.com/logs/19464765.html
请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。
ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。
2. Struts2部分类介绍
这部分从Struts2参考文档中翻译就可以了。
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来解析。
3. Struts2请求流程
1、客户端提起一个(HttpServletRequest)请求,如在浏览器中输入”http://localhost:8080/Struts2/add.action”就是提起一个(HttpServletRequest)请求
2、请求被提交到一系列(主要是三层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意这里是有顺序的,先ActionContextCleanUp,再其他过滤器(SiteMesh等)、最后到FilterDispatcher。
3、FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类.,如上文的“add.action”
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可
能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版
资料:
/article/7910320.html
http://aumy2008.blogbus.com/logs/19464765.html
相关文章推荐
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读(一)_Struts2框架流程概述
- Struts2源码阅读之流程概述
- Struts2源码阅读--请求流程
- Struts2源码阅读之Action和Interceptor的执行流程
- Struts2源码阅读--请求流程
- Struts2源码阅读(1)_整体流程分析
- Struts2请求处理流程及源码分析
- Struts2源码阅读之Dispatcher
- Struts2请求处理流程及源码分析
- 深入详解Struts2——struts2框架的调用流程
- Tomcat源码阅读之Server.xml文件的处理与Catalina启动流程
- Struts2请求处理流程及源码分析
- struts2学习之运行流程及源码第一篇
- Struts2源码阅读