【转载】Struts2系统架构
2016-07-28 22:48
344 查看
原文地址,点此进入
Struts2的官方文档里附带了Struts2的架构图,下面这张图上展示了Struts2的内部模块,以及它们的运行流程。
这张图上分了好多块,彼此之间相互联系,先浏览一下各块的名字,再留心一下运行图最下面的图例,分为四种颜色。
*橙色是Servlet Filters,过滤器链,所有的请求都要经过Filter链的处理。
*浅蓝色是Struts Core,Struts2的核心部分,Struts2中已经做好的功能,在实际开发中不需要动它们。
*浅绿色是Interceptors,Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;当然,也可以自定义拦截器,用来实现具体业务需要的功能。
*浅黄色是User Created,由开发人员创建的,包括struts.xml、Action、Template,是每个使用Struts2来进行开发的人员都必须会的。
各模块说明
架构图上有好多东西,接下来逐个击破。首先看看它们各自是做什么的,跟着图上的箭头一个一个来看:
*FilterDispatcher是整个Struts2的调度中心,根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,那么它将会执行Action处理,并停止过滤器链上还没有执行的过滤器。
*ActionMapper提供了HTTP请求与action执行之间的映射,简单点说,ActionMapper会判断这个请求是否应该被Struts2处理,如果需要Struts2处理,ActionMapper会返回一个对象来描述请求对应的ActionInvocation的信息。
*ActionProxy是一个特别的中间层,位于Action和xwork之间,使得我们在将来有机会引入更多的实现方式,比如通过WebService来实现等。
*ConfigurationManager是xwork配置的管理中心,通俗的讲,可以把它看做struts.xml这个配置文件在内存中的对应。
*struts.xml是Stuts2的应用配置文件,负责诸如URL与Action之间映射的配置、以及执行后页面跳转的Result配置等。
*ActionInvocation:真正调用并执行Action,它拥有一个Action实例和这个Action所依赖的拦截器实例。ActionInvocation会执行这些拦截器、Action以及相应的Result。
*Interceptor(拦截器):拦截器是一些无状态的类,拦截器可以自动拦截Action,它们给开发者提供了在Action运行之前或Result运行之后来执行一些功能代码的机会。类似于我们熟悉的javax.servlet.Filter。
*Action:动作类是Struts2中的动作执行单元。用来处理用户请求,并封装业务所需要的数据。
*Result:Result就是不同视图类型的抽象封装模型,不同的视图类型会对应不同的Result实现,Struts2中支持多种视图类型,比如Jsp,FreeMarker等。
*Templates:各种视图类型的页面模板,比如JSP就是一种模板页面技术。
Tag Subsystem:Struts2的标签库,它抽象了三种不同的视图技术JSP、velocity、freemarker,可以在不同的视图技术中,几乎没有差别的使用这些标签。
参考资料:http://my.oschina.net/exit/blog/153385
Struts2的官方文档里附带了Struts2的架构图,下面这张图上展示了Struts2的内部模块,以及它们的运行流程。
这张图上分了好多块,彼此之间相互联系,先浏览一下各块的名字,再留心一下运行图最下面的图例,分为四种颜色。
*橙色是Servlet Filters,过滤器链,所有的请求都要经过Filter链的处理。
*浅蓝色是Struts Core,Struts2的核心部分,Struts2中已经做好的功能,在实际开发中不需要动它们。
*浅绿色是Interceptors,Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;当然,也可以自定义拦截器,用来实现具体业务需要的功能。
*浅黄色是User Created,由开发人员创建的,包括struts.xml、Action、Template,是每个使用Struts2来进行开发的人员都必须会的。
各模块说明
架构图上有好多东西,接下来逐个击破。首先看看它们各自是做什么的,跟着图上的箭头一个一个来看:
*FilterDispatcher是整个Struts2的调度中心,根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,那么它将会执行Action处理,并停止过滤器链上还没有执行的过滤器。
*ActionMapper提供了HTTP请求与action执行之间的映射,简单点说,ActionMapper会判断这个请求是否应该被Struts2处理,如果需要Struts2处理,ActionMapper会返回一个对象来描述请求对应的ActionInvocation的信息。
*ActionProxy是一个特别的中间层,位于Action和xwork之间,使得我们在将来有机会引入更多的实现方式,比如通过WebService来实现等。
*ConfigurationManager是xwork配置的管理中心,通俗的讲,可以把它看做struts.xml这个配置文件在内存中的对应。
*struts.xml是Stuts2的应用配置文件,负责诸如URL与Action之间映射的配置、以及执行后页面跳转的Result配置等。
*ActionInvocation:真正调用并执行Action,它拥有一个Action实例和这个Action所依赖的拦截器实例。ActionInvocation会执行这些拦截器、Action以及相应的Result。
*Interceptor(拦截器):拦截器是一些无状态的类,拦截器可以自动拦截Action,它们给开发者提供了在Action运行之前或Result运行之后来执行一些功能代码的机会。类似于我们熟悉的javax.servlet.Filter。
*Action:动作类是Struts2中的动作执行单元。用来处理用户请求,并封装业务所需要的数据。
*Result:Result就是不同视图类型的抽象封装模型,不同的视图类型会对应不同的Result实现,Struts2中支持多种视图类型,比如Jsp,FreeMarker等。
*Templates:各种视图类型的页面模板,比如JSP就是一种模板页面技术。
Tag Subsystem:Struts2的标签库,它抽象了三种不同的视图技术JSP、velocity、freemarker,可以在不同的视图技术中,几乎没有差别的使用这些标签。
参考资料:http://my.oschina.net/exit/blog/153385
相关文章推荐
- SpringBoot开发实践-restful风格
- java获取日期 昨天 今天 明天的日期
- Spring Boot:在Eclipse/STS设置热插拔免重启
- java源码:hashSet
- javaweb学习总结五(内省、beanUtils工具包)
- ==和.equals()的区别
- Native层与java层之间的数据传递代码实例
- SpringMVC 注解
- 使用Spring MVC构建Web应用程序
- 【Java】Hashmap不能用基本的数据类型 Dimensions expected after this token
- java设计模式_策略模式
- 《Java集合》学习笔记
- Java源码:ArrayList的实现原理
- System.arrayCopy (java 数组复制) 深入解析
- StrutsOGNL
- 在eclipse中使用git插件同步工程
- Java 正则表达式的详解
- java中异常和集合
- struts.xml配置文件的各个 标签/属性 解析(转)
- java.nio系列二