`

Struts(二)工作原理和具体流程

 
阅读更多

原理:

来自客户的所有请求,统一由Struts框架中的中心控制器ActionServlet接收,根据接收的请求参数和Struts配置(struts-config.XML)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。

Action则是Struts应用中真正干活的组件,它解决的是做什么的问题,它通过调用需要的业务组件来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。

需要注意的是Action这个类,不应该包含过多的业务逻辑,而应该只是简单地收集业务方法所需要的数据并传递给业务对象。它的主要职责是:校验前提条件或者声明;调用需要的业务逻辑方法;检测或处理其他错误;路由控制到相关视图。真正的业务逻辑应该放到下一层的Model中处理。

原理示意图:

工作流程细节:

首先看web.xml中Struts的配置


细节步骤:

(1)加载配置信息

Web容器(如Tomcat)启动时,通过web.xml的<struts>标签判断Struts的存在,web应用启动时就通过<strvlet-class>标签加载、初始化ActionServlet,struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时ActionServlet会读取配置文件struts-config.xml的配置信息,为struts中不同的模块初始化相应的对象。当ActionServlet接收到一个客户请求时,将执行如下流程:

(2)取得URL

Tomcat根据请求的路径格式判读是否使用Struts框架,本例中在web.xml中配置以do结尾则使用(如login.do以do结尾)。然后Tomcat通过<servlet-name>标签得到<servlet-class>的路径,调用ActionServlet的doGet()/doPost()方法,在doGet()/doPost()中调用process方法。

然后通过process调用到RequestProcessor类(这是一个核心控制类)中的processPath()方法来获取到请求的真正URL(例如login.do的到login)。如果不存在就返回请求路径无效信息;

(3)检索和用户请求匹配的ActionMapping,创建ActionForm

根据截取的URL调用processMapping(request, response, path)方法取得ActionMapping(根据struts-config.xml文件预先加载好的)。

然后根据得到的ActionMapping调用processActionForm(request, response, ActionMapping)方法,根据ActionMapping中name查找到ActionForm。

如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

然后通过调用processPopulate(request, response, form, mapping)方法将表单中的值设置到ActionForm对象中。

(4)验证表单

接着调用RequestProcessor类中的processValidate(request, response, form, mapping),看配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate(mapping, request)方法;

如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;

(5)创建Action

接着调用RequestProcessor类中processActionCreate(request, response, mapping)方法,ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例。

(6)得到ActionForward,进行转向

接着调用RequestProcessor类中processActionPerform(request, response, action, form, mapping)执行查找到的用户自定义的Action中的execute()方法,Action一般只包含一个excute()方法,execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件。

服务器通过ActionForward对象进行转发工作。ActionForward对象指向JSP组件生成动态网页,返回给客户。

最后附上具体流程的时序图。关于Struts的几个重要对象将在下次具体介绍。

分享到:
评论

相关推荐

    Struts2 工作原理 Struts2框架 有图

    Struts2框架作为Java Web开发领域中的一款经典MVC(Model-View-Controller)框架,其工作原理涉及到了一系列复杂的组件交互与流程控制。本文将深入解析Struts2的工作流程,帮助开发者理解其核心机制。 ### 一、...

    Struts1与Struts2原理 区别详解汇总

    #### Struts1工作流程 1. **用户提交请求**:客户端向服务器发送HTTP请求。 2. **ActionServlet接收请求**:ActionServlet接收到请求后,根据`struts-config.xml`文件中的配置决定调用哪个Action来处理请求。 3...

    Struts1工作原理浅析

    ### Struts1工作原理浅析 #### 引入Struts:从Model1到Model2的转变 在探讨Struts1的工作原理之前,我们先来理解一下Model1与Model2架构的区别,这有助于我们更好地理解Struts框架的核心价值。 **Model1架构**是...

    struts框架原理图

    根据提供的文件信息,“Struts框架原理图”主要阐述了Struts框架的工作原理、流程以及页面间的跳转机制。为了更好地理解和应用Struts框架,本文将深入解析这些关键知识点。 ### Struts框架概述 Struts是一个开源的...

    Struts的体系结构与工作原理

    ActionServlet 负责调用 Action 类,Action 类执行具体的业务逻辑,ActionMapping 和 ActionForward 定义了不同的业务逻辑路径和流程。ActionServlet 根据请求参数和配置信息,将请求转发到相应的 Action,Action ...

    struts2工作原理.doc

    通过深入理解其工作原理和架构设计,开发者能够更好地利用Struts2来构建高效稳定的应用系统。同时,面对Struts2的一些不足之处,开发者也应该积极探索其他解决方案或技术栈,以适应不断变化的技术环境和发展需求。

    Struts2基本原理

    Struts2的设计理念和工作流程与WebWork框架相似,可以认为Struts2是对WebWork的升级和扩展,吸收了WebWork的优点,同时改进了Struts1的一些不足,如更简洁的配置和更强大的动作映射。 8. **集成其他框架**: ...

    Struts工作原理、流程.doc

    以下是对Struts工作原理和流程的详细解释: ### Struts配置步骤 1. **导入Struts库**:在项目中引入Struts相关的jar包,这些库包含了Struts框架运行所需的所有组件。 2. **创建配置文件**:在`WEB-INF`目录下创建...

    Struts2工作原理模拟

    通过对这些文件的学习和分析,可以更深入地理解Struts2的工作流程和设计思想。 总之,Struts2是一个强大且灵活的MVC框架,它的工作原理涵盖了前端控制器、拦截器、Action、结果映射等多个关键组件,提供了高效、...

    struts1 mvc基本原理

    本文将深入探讨Struts1的基本原理,帮助理解其架构设计和工作流程。 **1. MVC架构** MVC模式是软件工程中一种用于分离业务逻辑、数据和用户界面的设计模式。在Struts1中,Model代表应用程序的数据和业务逻辑,View...

    struts1与Struts2的流程

    尽管它们都是Struts家族的一部分,但它们的工作原理和流程有着显著的区别。 **Struts1工作原理及流程** 1. **体系结构**:在Struts1中,核心控制器是`ActionServlet`,它负责处理HTTP请求,并根据`struts-config....

    struts2的工作原理

    #### 二、Struts2的工作流程 **2.1 请求处理流程** 当用户向Web应用发送一个HTTP请求时,Struts2会按照以下步骤处理: 1. **FilterDispatcher**:这是Struts2框架的核心组件之一,负责接收并处理所有HTTP请求。...

    struts2配置与工作原理

    ### Struts2配置与工作原理详解 #### 一、Struts2概述 Struts2是Apache Struts项目下的一个开源框架,它继承了Struts1的一些特性,同时又结合了WebWork框架的优点,使得它在Java Web开发领域具有很强的竞争优势。...

    struts执行原理

    ### Struts 1.2 执行原理详述 #### Struts 框架概述 Struts 是 Apache 组织提供的一款开源的 MVC (Model-View-Controller) 架构实现框架,广泛...了解其核心执行流程对于深入理解 Struts 框架的工作机制至关重要。

    Struts简介 什么是Struts Struts基本运作流程

    ### Struts简介与基本运作流程 #### 一、Struts简介 Struts 是一款用于构建企业级Java Web应用的开源框架,它遵循...通过深入理解其架构原理和运作流程,可以帮助开发者更好地利用Struts来提高开发效率和软件质量。

    Struts framework的工作原理和组件Struts framework的工作原理和组件

    ### Struts Framework 的工作原理与核心组件解析 #### 一、概述 Struts框架作为Java Web开发中的一个重要组成部分,自2000年初发布以来,便因其强大的功能和易用性而受到广泛欢迎。该框架主要针对MVC(Model-View-...

    struts与tomcat的配置与工作原理

    了解Struts的配置和工作原理,有助于开发者更有效地构建和维护Java Web应用,提高开发效率。在实际开发中,还需要掌握如何编写Action类、ActionForm、JSP页面以及配置文件,以实现特定的功能需求。

    Struts2拦截器原理分析

    在文章"Struts2拦截器原理分析实例"中,作者通过一个具体的应用场景,展示了如何配置和使用拦截器来实现特定的功能,比如日志记录或权限验证。通过阅读这篇博客,我们可以更直观地理解拦截器的工作方式和价值。 ...

    struts工作原理

    下面我们将详细解析Struts的工作原理和流程。 1. **初始化配置**: 当Web服务器启动时,根据`web.xml`配置文件,ActionServlet(Struts的总控制器)被加载并初始化。ActionServlet会读取`struts-config.xml`配置...

    struts2重要知识点原理

    总结起来,Struts2框架通过FilterDispatcher作为核心控制器拦截和处理用户请求,使用Action和Interceptor实现业务逻辑和控制流,通过配置文件(struts.xml)管理Action的映射和结果,同时依赖ObjectFactory创建和管理...

Global site tag (gtag.js) - Google Analytics