`
javaeyetodj
  • 浏览: 432626 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts核心运行机制

阅读更多

转自http://hi.baidu.com/baozi52/blog/item/98c928088c135531e8248877.html

Struts中的C层功能:

1、  接受客户端请求

2、  调用M层模型组件执行相应的业务逻辑。

3、  获取M层业务逻辑的处理结果

4、  根据处理结果选择合适的视图呈现给客户端。

C层核心控制组件是:ActionServlet,它是org.apache.struts.action.ActionServlet类型的Servlet

他继承javax.Servlet.Http.HttpServlet,并实现了init(),doGet()/doPost(),destroy()Servlet生命周期所用到的方法。还添加了一个process(),它本身不复杂,但它会调用其他的复杂方法。

ActionServlet接收到来自Servlet容器的客户请求时,他的处理步骤:

1、  根据浏览器是post还是get请求调用doPost()doGet()方法,在其中调用ActionServletprocess()方法。

2、  Process()获取RequestProcessor对象-à调用RequestProcessor对象的process()方法

3、  Process()读取struts-config.xml,在其中查找<action>子元素,查找的条件是:用户请求的URIaction元素的path属性值一样,找到后确定name属性,根据name找到<form-bean>元素,再根据action元素的name匹配值找到相应的ActionForm bean

4、  调用ActionForm beansetter方法填充FormBean的属性,然后调用FormBeanvalidate()方法,对表单数据的有效性进行验证。

5、  RequestProcessorprocess()方法根据3中找到的<action>中的type属性寻找Action bean对象(有则使用,无则创建),然后将FormBean对象,封装的请求对象等信息发给找到的Action对象,Action bean调用自己的execute()方法处理。

6、  Action beanexecute()方法执行完璧后,返回一个ActionForward对象,又回到RequestProcessor对象的process()方法,process方法将根据ActionForward请求重新定向到指定的页面。

流程:

1、客户请求req.do

ActionServlet>process()>RequestProcessor.process()>struts-config.xml>

                                                        <action>>path=/req

                                                        <action>>name><form-bean>>setXXX()

                                                        <action>>type>获得Action>execute()

>execute()返回ActionForward()

              

RequstProcessor类时struts控制器的真正的请求处理者。它定义了多个processXXX()方法完成具体的处理工作。如果要扩展ActionServlet类,可以从RequstProcessor继承,实现自己的控制逻辑。其中,它提供一个processPreprocess()方法用于在子类中被重写,加入定制的预处理共功能。

Struts中的ActionForm有表单数据是使用

ActionForm bean 的声明和使用在struts-config.xml中是分开的。这样一个bean可以处理多个页面不同的请求表单信息。

声明:<form-bean>

使用:<action name=”formbean”>

定义ActionForm bean后,必须在struts-config.xml中声明。之后,再指明ActionForm bean被处理的请求之间的对应关系,一个萝卜一个坑,(当然,这个请求是含有表单信息的请求)。即事先约定好在那种情况下使用某个特定的ActionForm bean,这种约定是在配置文件中给出的。类似这样的:

<action-mappings>

<action path=”/login” type="com.fzxy.LoginAction" name="formBean1" scope="request" input="/login.jsp" />

<action path="/regist" forward="/regist.jsp"/>

</action-mappings>

这个<action-mappings>元素给出各种可能的客户端请求与处理方式之间的对应关系,一个<action>对一种请求URI的处理办法。

<action>元素的属性:

path:客户请求的页面URI

type:处理请求的Action对象的类型,包括包名

name:用于自动接收path请求表单信息的ActionForm bean的名字,该名字在<form-bean>中声明。

scopeActionForm bean的适用范围,通常为requestsession

虚线代表第一次请求,实线代表第二次请求当范围时:

request,只在当前请求和响应有效,请求由一个组件转发到另一个组件是,该对象一直有效。当服务器返回响应结果给客户时,ActionForm bean被销毁。图中范围为request时,form对象将覆盖第一次请求及响应周期内的4个组件,4个组件共用一个ActionForm对象。当浏览器发出第二个请求时,将重新创建一个新的ActionForm对象。

session时,两次请求只要在一个会话中,这些组件始终共用一个ActionForm对象。

 

input:处理请求出错时转向的页面

 

分享到:
评论

相关推荐

    struts2运行机制

    ### Struts2运行机制详解 #### 一、Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它为开发者提供了构建可扩展、易于维护的Web应用程序的工具。Struts2不仅继承了...

    struts核心的jar(只是struts运行所需的核心jar)

    在本压缩包中包含的是Struts 2.5.18版本的核心库,这是Struts框架运行所必需的组件。 Struts 2的核心jar文件主要包含了以下几个关键组件: 1. **`struts2-core.jar`**:这是Struts 2框架的核心库,包含了Action、...

    struts2运行原理

    struts2 的运行机制可以分为以下几个步骤: 1. 客户端在浏览器中输入一个 url 地址。 2. 这个 url 请求通过 http 协议发送给 Tomcat。 3. Tomcat 根据 url 找到对应项目里面的 web.xml 文件。 4. 在 web.xml 里面会...

    struts2.2.3加载的核心jar包

    该压缩包文件"struts2.2.3加载的核心jar包"中包含了一系列用于运行和开发Struts2应用的必需库。这些jar包提供了框架的基础组件和服务,下面将详细介绍其中的关键知识点: 1. **Struts2核心库**:struts2-core.jar ...

    最新版struts2 核心开发包

    5. **javassist-3.11.0.GA.jar**:Javaassist是一个用于操作字节码的库,Struts2使用它在运行时动态创建或修改类。这对于实现某些高级功能,如动态代理和AOP(面向切面编程)非常有用。 6. **commons-io-2.0.1.jar*...

    struts2核心文件

    Struts2的核心jar包包含了框架运行所需的所有基本组件和服务。这些组件和服务包括但不限于: 1. **Action类和ActionSupport**: Action是Struts2的核心组件,负责处理用户请求并执行业务逻辑。ActionSupport是Action...

    struts2核心配置文件

    这两个文件共同决定了Struts2框架的行为特征和应用的运行逻辑。 #### 二、struts.xml 文件详解 `struts.xml` 文件是Struts2的核心配置文件之一,主要负责管理和定义应用程序中的Action映射以及相关的Result定义。...

    Struts2 核心jar包源码

    Struts2的核心jar包是框架运行的基础,包含了处理请求、控制流程、数据绑定、异常处理等关键功能。源码分析对于理解其工作原理、进行定制化开发和优化性能具有重要意义。 首先,我们来看`xwork`,它是Struts2的核心...

    struts2核心包

    3. **struts2-core-2.1.8.jar**: 这是Struts2框架的核心库,包含了Struts2的控制器、配置管理、插件机制等核心功能。它负责处理HTTP请求,解析配置文件,管理Action实例,并调用相应的业务逻辑。同时,这个包还包含...

    Struts2 核心jar包

    "Struts2核心jar包"是实现这一框架的基础,它包含了运行Struts2应用程序所必需的类库。 Struts2的核心jar包主要包括以下几个部分: 1. **Action**:这是Struts2的核心组件,负责处理用户请求。Action接口定义了...

    struts2核心包(保证好用)

    这个压缩包“struts2核心包(保证好用)”包含了运行Struts2应用程序所必需的核心库。下面我们将深入探讨Struts2的核心概念、工作原理以及它如何帮助开发者构建高效、可维护的Web应用。 1. **Struts2框架概述** ...

    Struts2的工作机制及分析

    Struts2是Struts1.x和WebWork两个社区合作的结果,可以认为是WebWork的一个进化版本,继承了WebWork的核心机制并在此基础上进行了优化和封装。 在Struts2的工作机制中,FilterDispatcher是一个关键组件,它是一个...

    struts2.3核心jar包

    这个核心jar包是Struts2框架的基础组件,包含了运行Struts2应用程序所需的关键类和库。下面将详细介绍Struts2.3的核心知识点: 1. **Action接口与ActionSupport类**: Struts2中的Action接口定义了处理用户请求的...

    struts2核心包完整jar包

    这个核心包完整jar包包含了Struts2框架运行所必需的所有组件,可以帮助开发者快速搭建基于Struts2的项目环境。 Struts2的核心组件包括以下几个部分: 1. **Action类**:这是业务逻辑的载体,负责处理用户请求。每...

    struts2.3.4核心JAR包

    2. **拦截器(Interceptors)**:Struts2的拦截器机制允许开发者插入代码片段,这些代码会在Action执行前或后运行,例如日志记录、权限检查、性能监控等。 3. **配置管理**:Struts2使用XML或者注解进行配置,定义...

    Struts2运行流程测试

    在本文中,我们将深入理解Struts2的运行流程,并通过单元测试来验证其完整的工作机制,特别是涉及拦截器、验证框架和Result。 首先,让我们回顾一下Struts2的运行流程。当一个HTTP请求到达服务器时,Struts2框架会...

    struts运行原理

    Struts运行原理的理解对于任何Java Web开发者都至关重要,因为它提供了一种组织良好、可扩展的架构,使得开发人员能够更有效地管理应用程序的业务逻辑、视图呈现和控制流程。 1. **MVC模式**:Struts基于MVC设计...

    struts核心包

    "Struts核心包"是使用Struts框架进行开发时不可或缺的部分,它包含了实现Struts框架功能的各种类和接口。 在Struts框架中,核心包主要包含以下几个关键组件: 1. **ActionServlet**:这是Struts框架的核心控制器,...

    struts2.3.3核心包

    理解并掌握Struts2.3.3核心包中的这些组件和机制,对于开发者来说至关重要,因为它们构成了构建Java Web应用的基础,并且可以帮助开发者实现高效、灵活的控制层设计。在实际项目中,结合使用这些库和框架特性,可以...

    Struts框架核心包

    标题中提到的"Struts框架核心包"通常包含了Struts2框架的核心组件和必要的库文件,是搭建和运行Struts2应用程序的基础。这个核心包可能包括以下几个部分: 1. **Struts2框架核心类**:这些类负责处理HTTP请求,调度...

Global site tag (gtag.js) - Google Analytics