`
long_yu2
  • 浏览: 334497 次
社区版块
存档分类
最新评论

深入浅出学习Struts框架(十一)-分析Struts框架实例6

 
阅读更多

最近一段时间更新博客不太频繁,struts系列文章一直没有更新。主要是忙于权限项目,关于权限项目的博客也在构思中,过不了几日就能让各位读者看到。

今天主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping(这是前两篇文章中介绍的)之后,我们就要用利用ActionMapping来创建ActionForm了,并且把ActionForm放到request或session中管理。

先来看具体struts中processActionForm方法的具体实现:




这个方法的大体流程是:根据ActionMapping中的name名称查找ActionForm,如果配置了ActionForm,那么就到requestsession中查找,如果在requestsession中存在已经创建的ActionForm,那么将返回。如果不存在那么会根据ActionForm的完成路径采用反射进行创建,再将创建好的ActionForm放到requestsession中,之后返回ActionForm

具体我们可以跟随断点调试来看看这个方法是如何运行的。

首先还是同上篇博客中的方法一样,先设置断点,之后进入processActionForm方法。

第一个步骤就是创建ActionForm




通过调用RequestUtils.createActionForm的方法把ActionMapping中的ActionForm字符串生成对象,并且返回。进入这段代码中:



方法首先定义变量nama,并且从mapping中获取值,String name = mapping.getName();也就是我们实例中的LoginForm字符串。之后通过调用FormBeanConfig config =moduleConfig.findFormBeanConfig(name);这句话把相应的LoginForm字符串生成相应的对象。

这里要说明的是我们在struts-config配置文件中,配置过这样一个标签信息:



这个标签在服务器一启动的时候就会利用digester读取这里的配置信息,并且放在FormBeanConfig类中,这样我们可以通过上面那一句话就可以把LoginForm字符串生成相应的对象。

之后调用了ActionForm instance = lookupActionForm(request,attribute, mapping.getScope());这个方法,这个方法主要是查找scope属性中有没有存在ActionForm。具体实现:




这里判断scope属性值是否为request,如果是则从request中读出ActionForm,如果不是则从session中读出。程序如果是第一次执行,那么ActionForm会是为空的。因为这里的ActionForm为空,所以就进入了if判断语句中,最后通过调用return createActionForm(config, servlet);创建ActionForm并且返回。

之后processActionForm就会把返回来的ActionForm放入request或者session中。具体实现就是:



到此为止,ActionForm就创建完成,当ActionForm创建完成之后,就要用其他的方法来往ActionForm中赋值了,具体怎么做的,请关注我的博客,慢慢道来!


分享到:
评论

相关推荐

    深入浅出Struts2.pdf

    总之,“深入浅出Struts2”这份资料全面讲解了Struts2的各个关键组成部分,包括其工作原理、配置方式、拦截器机制、OGNL表达式、插件使用以及与Spring的整合,是学习和掌握Struts2框架的宝贵资源。通过深入学习和...

    深入浅出Struts2源代码

    这本书"深入浅出Struts2源代码"是针对该框架源码的深度解析,旨在帮助读者理解Struts2的工作原理,提升开发技能。 Struts2的核心组件包括: 1. **FilterDispatcher**:这是Struts2的入口点,它是一个Servlet ...

    《深入浅出Struts2》电子版全书.rar

    综上所述,《深入浅出Struts2》这本书应该详细讲解了这些知识点,并通过实例和代码示例帮助读者掌握Struts2框架的各个方面。通过阅读和实践书中的内容,开发者能够更好地理解和运用Struts2来开发web应用。

    《深入浅出struts》 源代码

    Struts 是一个开源的Java Web框架,由Apache软件基金会维护,用于构建基于MVC(Model-View-Controller)模式的Web应用程序。...同时,结合《深入浅出Struts》这本书的理论讲解,将使你的学习事半功倍。

    深入浅出Struts2.0

    通过学习这本书"深入浅出Struts2.0",开发者不仅可以掌握Struts2的基本用法,还能了解其内在机制,从而更好地运用到实际项目中。书中可能涵盖了上述所有概念的详细解释、实例演示以及最佳实践,有助于提升开发者在...

    深入浅出struts2

    本资料"深入浅出Struts2"将带你深入了解这个框架的核心概念、配置、拦截器以及实际应用。 1. **基础概念**: - MVC模式:Struts2基于MVC设计模式,它将业务逻辑、数据和用户界面分离,使得代码更易于维护和测试。 ...

    深入浅出Struts源代码

    《深入浅出Struts源代码》一书旨在帮助读者理解Struts的工作原理,通过分析源代码,让开发者能够深入到框架内部,更好地利用其功能,并解决实际开发中遇到的问题。书中的内容可能包括: 1. **Struts架构**:介绍...

    深入浅出Struts 2 DOC格式

    总之,《深入浅出Struts 2》是一本深度和广度兼具的教材,不仅适合初学者,也适用于有一定经验的开发者,它通过实例和详尽的解释,引导读者逐步探索和精通Struts 2框架的各个方面。通过学习这本书,开发者可以更好地...

    深入浅出struts2中文版

    ### 深入浅出Struts2中文版关键知识点概览 #### 1. Struts2框架概述 - **框架定位**:Struts2作为Java Web应用开发中的一个重要框架,继承了Struts1的设计思想,并在此基础上进行了大量优化和扩展。它通过一系列的...

    深入浅出Struts2(CN)

    ### 深入浅出Struts2:关键知识点解析 #### 一、Struts2概述 **Struts2** 是一款基于 **MVC (Model-View-Controller)** 架构模式的开源Java Web应用程序框架。它由Apache Struts 1发展而来,在保持了Struts 1的...

    深入浅出FreeMarker(一)-基础教程.pdf

    它专注于展示层的生成,与主流Web框架如struts2、springmvc集成良好,使得开发更为简单易学。同时,它支持多种方式加载模板,例如从文件系统、数据库等,并且可以自定义宏和函数,使开发更加灵活。 然而,...

    深入浅出Strust2 原书扫描版及完整实例代码

    本资源包含了《深入浅出Struts2》的原书扫描版以及与之配套的完整实例代码,旨在帮助开发者全面理解和掌握Struts2框架的精髓。 《深入浅出Struts2》这本书详细介绍了Struts2的基础概念、核心组件以及高级特性的使用...

    struts简单实例详解

    本实例将深入浅出地介绍如何使用Struts进行简单的Web应用开发。 首先,理解MVC模式至关重要。在MVC模式中,Model代表业务逻辑,负责处理数据;View是用户界面,展示数据;Controller作为两者之间的桥梁,接收用户...

    struts框架及标记库

    ### Struts框架及标记库详解 #### Struts框架概述 Struts框架,作为Java Web开发中的经典MVC(Model-View-Controller)架构实现之一,自问世以来便因其组件的模块化、灵活性以及高重用性,而备受开发者青睐。其...

    《Struts in Action中文版》真正完整版

    综上所述,《Struts in Action中文版》这本书不仅深入浅出地介绍了Struts框架的技术要点,还通过具体的案例分析帮助读者更好地理解和掌握Struts框架的实际应用。对于想要学习Struts框架的开发者来说,这本书是一本...

    深入浅出StrutsBookApps.rar

    这个"深入浅出StrutsBookApps"可能包含了多个示例应用,演示了上述概念的实际应用,通过这些实例,学习者可以更直观地理解Struts框架的工作原理和使用方法。解压后,你可以逐个浏览每个示例,研究它们的配置文件、...

    Struts In Action

    "Struts In Action"这本书是Struts技术的权威指南,它深入浅出地介绍了如何使用Struts进行实际开发。 书中可能涵盖了以下知识点: 1. **MVC设计模式**:Struts基于Model-View-Controller(MVC)设计模式,分离了...

Global site tag (gtag.js) - Google Analytics