`
takkymj
  • 浏览: 128247 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 1.2 控制器原理(转)

阅读更多
Struts1.2依然是应用很广的框架,熟悉其基本的控制流程是必要的:



一、ActionServlet的初始化

ActionServlet作为Struts组件的前端控制器,由于web.xml的相应配置:

<load-on-startup>0</load-on-startup>

在应用一加载时即会被实例化并调用其init方法,init方法所做的主要工作有二:

加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象
加载资源文件,并创建用于封装资源文件的MessageResources对象
需要注意两点:

如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。
针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。
另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn

<wbr></wbr><wbr></wbr>

二、ActionServlet的process

所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作有三:

根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。
根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。
调用RequestProcessor对象的process方法,将request和response作为参数传递给它。
三、RequestProcessor的process

RequestProcessor对象的process方法的主要工作有五步:

调用自己的 processPreprocess(request, response)方法,该方法不进行任何操作,用于子类重写扩展其功能。
获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定acion的配置信息。
根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。
如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其execute方法。
根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。
分享到:
评论

相关推荐

    struts1.2资源整合

    在配置Struts1.2时,你需要在web.xml中设置Struts的前端控制器Filter(通常为`org.apache.struts.action.ActionServlet`),并配置相应的Action Mapping。同时,还需要在struts-config.xml文件中定义Action、Form ...

    struts1.2下载包

    在JSP中,Struts1.2扮演着核心控制器的角色,它将用户请求转发到相应的Action,然后Action处理业务逻辑,最终通过模型更新数据并传递结果到视图进行展示。 首先,我们来看"struts-1.2.9-bin"这个压缩包文件。这通常...

    Struts1.2中文学习手册

    Struts1.2中文学习手册是一本面向初学者的指南,它涵盖了Struts1.2的基础知识、配置、控制器、模型、视图以及动作和业务逻辑的整合。 首先,手册会介绍Struts1.2的核心概念,包括Action类、Form Bean和Tiles布局。...

    struts 1.2驱动包

    4. **配置Web应用**:在Web应用的web.xml文件中配置Struts的前端控制器(Front Controller),即ActionServlet。 5. **编写Struts配置文件**:创建struts-config.xml文件,定义Action、ActionForm、ActionForward等...

    struts1.2.jar包

    模型层处理数据,视图层负责展示,而控制器则协调这两者之间的交互。 2. **Action类**:在Struts1.2中,Action类是核心组件,它接收来自用户的请求,处理业务逻辑,并决定跳转到哪个JSP页面进行响应。Action类继承...

    struts1.2源代码及文档

    Struts1.2源代码和文档对于深入理解其工作原理和扩展功能具有极大的价值。 首先,让我们来了解一下Struts1.2的核心组件: 1. **ActionServlet**:这是Struts的核心控制器,它是一个Servlet,负责接收来自客户端的...

    struts1.2-jars.rar 所有jar包

    Struts1.2 是一个基于MVC(Model-View-Controller)设计模式的Java ...在现代Web开发中,尽管Struts1.2已经相对过时,但了解其工作原理和使用方法,对于理解其他MVC框架,尤其是Spring家族的框架,仍然具有一定的帮助。

    struts 1.2 ActionFrom表单验证

    ActionForm是Struts 1.2中用于处理用户输入数据的核心组件,它负责在用户界面(JSP)与控制器(Action)之间传递数据。表单验证是确保用户提交的数据符合业务规则和数据完整性的重要环节。 在Struts 1.2中,...

    Struts1.2

    Struts1.2是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个框架的主要目的是...通过实际操作,可以更深入理解Struts1.2框架的工作原理和使用方法。

    struts1.2的jar包及源码

    例如,`struts-core.jar`包含了核心控制器、动作类和配置解析器,`struts-tiles.jar`提供了页面布局和组合功能,`struts-taglib.jar`则包含了一系列JSP标签,便于在视图层操作数据。开发者通常会将这些jar包加入到...

    struts1.2学习模型

    开发者可以通过分析和运行这个例子,了解Struts1.2的工作原理和开发流程。 学习Struts1.2不仅有助于理解MVC(Model-View-Controller)设计模式,还可以提升在企业级应用开发中的实践能力。尽管Struts1.2已经相对...

    struts1.2.doc

    ### Struts 1.2框架技术的基本原理及组件用法详解 #### 一、MVC模式解析 在探讨Struts框架之前,我们首先需要理解其核心设计模式——MVC(Model-View-Controller)。MVC模式是软件工程中广泛采用的一种架构模式,...

    struts1.2核心源码

    Struts1.2基于MVC设计模式,将应用分为三个主要部分:模型、视图和控制器。模型负责处理业务逻辑,视图负责展示数据,而控制器则负责接收用户请求并调度模型和视图。核心类如ActionForm、Action、ActionServlet和...

    BBS struts1.2课程设计项目

    在Struts1.2中,Action类扮演了控制器的角色。 **3. 项目分层** 项目结构清晰,一般包含以下几个主要部分: - **源码层**:包含Action类、Service接口及实现、DAO接口及实现、Model实体类等。 - **配置层**:struts...

    struts1.2 的列子

    - Struts1.2的控制器主要由Servlet(.struts.action_DISPATCHER)实现,它接收请求,解析请求参数,调用相应的Action,并根据Action的返回结果决定如何转发到视图。 6. **国际化与本地化**: - Struts1.2支持多...

    struts1.2 jar包

    1. **ActionServlet** - Struts的核心控制器,负责接收HTTP请求,解析请求参数,并将请求分派到相应的Action。 2. **Action** - 定义了业务逻辑的处理类,处理用户请求并返回结果。 3. **ActionForm** - 用于封装...

    struts 1.2源代码

    Struts 1.2源代码的分析可以深入理解其内部工作原理,这对于学习和调试该框架,或者进行自定义扩展都非常有价值。 在Struts 1.2源代码中,有几个关键组件值得我们关注: 1. **ActionServlet**:这是Struts的核心...

    最全的struts1.2操作流程

    Struts 1.2 是一个经典的 Java Web 开发框架,用于构建基于模型-视图-控制器(MVC)模式的应用程序。以下是对Struts 1.2操作流程的详细解释: **第一章:Struts 1.x 的配置过程** 1. **创建JavaWeb程序**:在开发...

Global site tag (gtag.js) - Google Analytics