`

struts2.0的工作原理

 
阅读更多

struts2.0的工作原理? 


  

1).客户端发出一个指向servlet容器的请求(tomcat);
2).这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器。
3).过滤器FilterDispatcher是struts2框架的心脏。在web容器启动时,struts2框架会自动加载配置文件里相关参数,
并转换成相应的类。在请求过程中所有的对象(Action,Results等)都是通过ObjectFactory来创建的。过滤器会通过询
问ActionMapper类来查找请求中需要用到的Action。
4).如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象。
ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类。
5).ActionProxy创建一个ActionInvocation的实例。ActionInvocation在ActionProxy层之下,它表示了Action
的执行状态,或者说它控制的Action的执行步骤。它持有Action实例和所有的Interceptor。
6).ActionInvocation实例使用命名模式来调用,1. ActionInvocation初始化时,根据配置,加载Action相关的所有
Interceptor。2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。在调用Action的过程
前后,涉及到相关拦截器(intercepetor)的调用。
7). 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是
(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。

请求首先通过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、客户端发送请求
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中实现,不知道其它还有什么方式

 

 

二、struts2标签分类:
1.表单UI标签
2.非表单UI标签
3.控制标签
4.数据标签


三、为什么使用struts2?

struts2.0的优点?
1).Struts2基于MVC架构,框架结构清晰,关注点绝大部分是在如何实现业务逻辑上,开发过程十分清晰明了。
2).使用OGNL进行参数传递,可以方便的获取RequestAttributeApplicationSessionParameters中的数据。大大简化
了开发人员在获取这些数据时的代码量。
3).强大的拦截器
4).易于扩展的插件机制,只需要将所需要的Jar包放到WEB-INF/lib文件夹中,在struts.xml中作一些简单的设置就可以
实现扩展。
  • 大小: 52.3 KB
分享到:
评论

相关推荐

    Struts2.0视频教程+struts2.0中文教程

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0视频教程+struts2.0中文教程"包含的资源旨在...

    struts2.0开发实例

    在你的实例中,`struts2.0开发实例.txt`文件很可能包含了一些具体的操作步骤、配置示例或者Action类的代码片段,这些都是学习和理解Struts2.0工作原理的重要参考资料。通过这个实例,你可以了解到如何将Struts2.0...

    Struts 2.0

    Struts 2.0 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web应用程序框架。它并非Struts 1的直接升级,而是源自...理解和掌握Struts 2的工作原理和配置方式,对于构建高效、可维护的Java Web应用至关重要。

    struts 2.0 详细配置

    ### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 ...通过上述介绍,我们可以了解到 Struts 2.0 的核心概念及其工作原理。掌握了这些基础知识后,开发者可以更轻松地使用该框架构建高质量的 Web 应用程序。

    三大框架中文文档中的struts2.0开发手册(程序员必看)

    - 拦截器的工作原理和如何自定义拦截器。 - 如何配置Struts2的配置文件,包括struts.xml和struts.properties。 - 结果类型的配置和使用,例如Redirect、Stream等。 - 插件的安装和使用,例如使用Freemarker或...

    struts2.0的 jar包和源文件

    这个压缩包包含了Struts2.0的核心jar文件以及可能的源代码,使得开发者可以直接查看和理解框架内部的工作原理。 在Java开发中,jar(Java Archive)文件是一种归档格式,它集合了多个类文件和其他资源,便于分发和...

    struts2.0环境配置

    Struts2.0是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,提供了一种结构化的解决方案,用于构建更健壮、可维护的Web应用程序。本教程将详细讲解如何在Myeclipse集成开发环境中...

    Struts 2.0全攻略之Struts 2.0参考手册

    Struts 2.0是Java Web开发中一个非常重要的MVC框架,它为构建基于J2EE...通过学习以上知识点,并结合提供的Struts 2.0参考手册,开发者可以更好地理解Struts 2.0的工作原理,从而更高效地构建和维护Java Web应用程序。

    struts2.0源代码

    Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta项目下的一个产品。这个框架主要用于构建MVC(Model-View-Controller)架构的应用程序,为开发者提供了一种更加灵活和强大的控制层解决...

    struts2.0的基本jar包

    在开发Struts2.0项目时,开发者需要理解Action、拦截器(Interceptor)、结果(Result)和配置文件(如struts.xml)的工作原理。Action是业务逻辑的载体,拦截器则提供了在Action执行前后进行额外处理的能力,如登录...

    struts2.0教程合集

    首先,"Struts+2+(中文PDF版).rar"很可能是Struts2.0的基础教程,以中文形式详细介绍了框架的基本结构、配置和工作原理。这份文档通常会涵盖Action、拦截器(Interceptor)、结果(Result)和配置文件(struts.xml)...

    Struts2.0中文教程

    5. **配置与拦截器**:讨论Struts2.0的核心配置文件,如struts-default.xml、struts-plugin.xml和自定义的struts.xml,以及拦截器的原理和使用,包括预定义的拦截器栈和自定义拦截器的实现。 6. **OGNL(Object-...

    struts2.0和hibernate 共2类JAR包

    Struts2.0和Hibernate是两个非常重要的Java框架,它们在企业级Web应用程序开发中扮演着核心角色。Struts2.0是MVC(模型-视图-控制器)设计模式的一种实现,主要用于处理用户请求和控制应用程序流程。而Hibernate则是...

    Struts2.0框架书籍

    Struts2.0框架是Java Web开发中的一款经典MVC(Model-View-Controller)框架,它极大地...通过系统的理论学习和实践操作,可以深入理解Struts2.0的工作原理,提高开发效率,为构建高质量的Java Web应用打下坚实基础。

    Struts2.0文件上传原理

    以下是对Struts2.0文件上传原理的详细解释: 1. **HTTP协议与表单提交** 在HTML表单中,如果需要上传文件,`<form>`标签必须包含`enctype="multipart/form-data"`属性。这是因为普通POST请求无法处理二进制数据,...

    struts2.0中文帮助手册

    Struts2.0是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个框架的主要目的是为了简化Web应用开发,提高代码的可维护性和可扩展性。Struts2.0在...

    struts2.0中文教程

    在本教程中,你将学习如何配置Struts2.0环境,创建第一个Hello World程序,理解Action和ActionMapping的配置,使用OGNL进行数据交互,了解拦截器的原理和编写,以及如何利用视图技术展示数据。此外,还将深入探讨...

    struts2.0 经典书籍 源码 标签学习合集

    接下来,"源码"部分可以帮助你理解Struts2.0框架的内部工作原理。通过阅读源码,你可以学习到: 1. **框架架构**:Struts2.0是如何接收和处理HTTP请求的,以及ActionInvocation、FilterDispatcher等关键组件的作用...

Global site tag (gtag.js) - Google Analytics