`
jaenson
  • 浏览: 189008 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

struts 运行机制------Struts中的控制层功能

阅读更多
Struts中的控制层功能:

1、  接受客户端请求

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

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

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

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

他继承javax.Servlet.Http.HttpServlet,并实现了init(),doGet()/doPost(),destroy()等Servlet生命周期所用到的方法。还添加了一个process(),它本身不复杂,但它会调用其他的复杂方法。ActionServlet接收到来自Servlet容器的客户请求时,他的处理步骤:

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

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

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

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

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

6、  Action bean的execute()方法执行完璧后,返回一个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()方法用于在子类中被重写,加入定制的预处理功能。


转载自:http://hendryxu.iteye.com/blog/147138
分享到:
评论

相关推荐

    struts-1.3.8-all.jar

    8. **异常处理**:Struts 提供了一套优雅的异常处理机制,可以全局统一处理应用程序中的异常,提高用户体验。 9. **标签库**:Struts 自带了一系列 JSP 标签,如 `&lt;s:form&gt;`、`&lt;s:textfield&gt;` 等,简化了视图层的...

    struts-xwork-core源码

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它的目标是简化开发并提供更强大的控制层。XWork则是Struts2的基础,它处理请求、调度Action、执行业务逻辑,并与用户界面进行交互。 1...

    struts-1.2.9-bin.zip

    标题中的"struts-1.2.9-bin.zip"表明这是一个包含Struts 1.2.9二进制文件的压缩包,通常包含了运行Struts应用程序所需的JAR文件、文档、示例代码和其他资源。 **Struts框架核心概念:** 1. **ActionServlet**:...

    struts-2.3.36-all.zip

    它的核心是基于Action和Result的设计模式,为开发者提供了灵活的控制层,便于实现业务逻辑和表现层的分离。"struts-2.3.36-all.zip" 是一个包含了Struts2框架的完整版本,版本号为2.3.36,这个压缩包通常包括了运行...

    struts-2.3.14-lib

    Struts 2.3.14 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,主要用于简化开发过程并提供强大的控制层。这个“struts-2.3.14-lib”压缩包包含了Struts 2框架在版本2.3.14中的所有必需库...

    struts-1.2.9-lib

    8. **异常处理**:Struts提供了全局的异常处理机制,可以通过配置文件定义如何处理特定的异常。 9. **ActionForward**:定义了Action执行后转向的页面或Action,可以实现页面跳转和业务流程控制。 在开发环境中,...

    struts2---jar包

    - **Interceptor**:拦截器是Struts2中实现AOP(面向切面编程)的重要机制。它可以插入到Action调用之前和之后,实现如日志记录、权限验证、性能监控等通用功能。 - **Result**:Result负责将Action执行后的结果...

    struts-2.1.8-lib.rar

    SSH(Spring、Struts、Hibernate)是Java Web开发中的一个经典组合,其中Struts 2负责展现层,Spring管理业务逻辑和依赖注入,Hibernate处理持久化。在本压缩包中,可能包含与Spring集成的相关库,如`spring.jar`,...

    struts-2.3.24-all

    开发人员可以解压此压缩包,将对应的JAR文件加入到项目的类路径中,从而利用Struts 2的强大功能构建Web应用程序。同时,对于初学者,了解每个JAR文件的作用以及如何在实际项目中使用它们,是掌握Struts 2的关键步骤...

    struts-1.2.9-all-bin

    这个"struts-1.2.9-all-bin"压缩包包含了Struts框架的完整二进制版本,适用于那些想要在项目中使用或者学习Struts 1.x版本的开发者。下面将详细阐述Struts框架的核心概念、主要组件以及如何使用Struts 1.2.9版本进行...

    struts-2.5-docs

    这个框架基于Model-View-Controller(MVC)设计模式,为开发者提供了强大的控制层,帮助他们实现灵活、可扩展且易于维护的Web应用。"struts-2.5-docs"是一个包含Struts 2.5版本所有相关文档的压缩包,对于理解和掌握...

    struts-2.1.0-lib

    - `xwork-core.jar`:Struts 2的基础架构建立在XWork之上,它提供了一些基础的AOP(面向切面编程)支持和动作执行机制。 2. **依赖的第三方库**: - `ognl.jar`:Object-Graph Navigation Language,用于表达对象...

    Struts2框架-jar包

    其中,Struts2标签库提供了一系列便捷的标签,简化了JSP页面的编写,使得视图层与控制层更加分离。例如,`&lt;s:property&gt;`标签用于显示Action对象的属性值,`&lt;s:form&gt;`标签用于创建表单,`&lt;s:submit&gt;`标签则用于提交...

    struts2.2.3加载的核心jar包

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用,提供了强大的控制层来处理请求、数据绑定、验证和结果展示。Struts2.2.3是Struts2的一个版本,这个...

    Struts2--环境搭建

    在这个环境搭建的过程中,我们主要关注如何配置和准备必要的库文件,以便运行一个基本的Struts2应用程序。 首先,我们需要理解Struts2的核心组件和工作原理。Struts2框架通过拦截器(Interceptor)机制处理HTTP请求...

    struts2-core-2.5.10.1

    总结来说,Struts2-core-2.5.10.1是一个成熟的Java Web开发框架,具有强大的MVC架构、高效的请求处理、丰富的标签库、安全的控制层以及灵活的扩展性。这个版本的更新主要是性能优化和安全修复,为开发者提供了更稳定...

    struts-1.3.9-lib.zip

    - Struts提供了丰富的标签库,如logic、bean、html等,简化了JSP页面的编写,降低了视图层和控制层的耦合。 6. **国际化与本地化**: - Struts支持多语言环境,通过资源包(Resource Bundle)实现文本的国际化。 ...

    struts-2.3.8-all-part2

    开发者可以通过这些例子来理解如何在实际项目中使用Struts2,包括控制器、视图、模型以及与数据库的交互等。 "docs"目录则包含了框架的文档,包括API参考、用户指南、开发者手册等。这些文档对于理解和使用Struts2...

    struts-1.3.10-lib.rar

    综上所述,"struts-1.3.10-lib.rar"压缩包中的库文件是构建基于Struts 1.3.10的Java Web应用的基础,它们包含了运行和开发Struts应用所需的所有依赖。在实际开发中,开发者需要对这些组件有深入理解,才能充分发挥...

    struts-2.0.11.2-lib

    这个压缩包提供的所有库文件是构建和运行基于Struts2.0.11.2的Java Web应用程序的基础,开发者需要理解每个库的作用以及如何整合它们来创建一个功能完整的应用。同时,随着技术的更新,及时关注Struts2的最新版本和...

Global site tag (gtag.js) - Google Analytics