Struts框架是MVC模式的一种实现,框架提供的是一种"半成品",使用框架可以让我们快速构建应用程序
Struts概览
如图:
1、客户端浏览器发出http请求,当我们通过客户端浏览器向web应用程序发送请求时,web服务器首先读取struts-config.xml,struts-config.xml指定了哪一个servlet充当中心控制器。所有的请求都交给中心控制器Controller servlet处理。我们可以在中心控制器中添加判断、过滤等功能。Controller Servlet属于Controller层。
2、接下来根据用户的请求,可能需要一些业务逻辑的处理。在Struts架构中Business Logic Action就充当了业务逻辑代理。比如客户的请求包括存款、取款、余额查询等业务,这些业务由一个一个单独的业务逻辑类来处理。这些业务逻辑处理类由中心控制器来分派。具体的业务逻辑处理类可以由javabean,ejb,webservice等来具体处理。Business Logic Action实际上时作为业务逻辑处理类的前端,作为业务代理。Business Logic Action不实现具体的业务逻辑,而是由Business Logic Action去调度另外的具体业务逻辑处理类(javabean,ejb,webservice)。一个Action代表一个业务逻辑,中心控制器Servlet只能看到Action,根据不同的客户请求转发(Dispatch)给不同的Action,而不同的Action创建不同的javabean或者ejb的对象,调用其业务方法来响应客户的请求。Business Logic Action也是属于Controller层。
3、Model Application State,这是业务逻辑组件。相应的业务逻辑组件可以修改相应的数据,访问数据库,接受用户数据填充到javabean中等。
4、业务逻辑处理完后,控制权回到中心控制器Controller Servlet,由它导航到某个jsp页面,由jsp页面(通过getProperty标签获取相应的数据)响应到客户端浏览器。
Struts组成部分介绍
控制(Control):由ActionServlet实现:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类),再由这些动作类调用不同的业务逻辑组件。另外,控制组件也负责用相应的请求参数填充Action Form(通常称之为ActionBean),并传给动作类(通常称之为FormBean)。动作类实现核心商业逻辑,它可以访问java bean或调用EJB。最后动作类把控制权传给后续的JSP文件,后者生成视图。所有这些控制逻辑利用Struts-Config.xml文件来配置。
视图(View):由JSP实现:主要由JSP生成页面完成视图,在这里JSP最好仅仅完成显示的工作就好了。Struts提供丰富的JSP标签库:Html,Bean,Logic,Template等,这有利于区分开表现逻辑和程序逻辑。也可以不使用Struts标签库,而采用JSTL标准标签库,而且行业趋势是采用JSTL标准标签库,因此Struts标签库我们可以不用花时间去理会它。
模型(Model):模型以java bean的形式存在。这些bean分为三类:Action Form、Action(可以认为Action控制层)、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户信息,如表单信息。Action通常称之为ActionBean,获取从ActionServlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。(建议不要直接再Action内实现FormBean或者JavaBean或者EJB的工作,这样做模块化比较弱,不适合更新维护)。
Struts应用程序执行过程
在Struts中,用户的请求一般以*.do作为请求服务名(而*.do不是一个实际的文件而是一个虚拟的东西),所有的*.do请求均被指向ActionServlet,ActionServlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。
根据上面的分析得出:
Struts的核心是ActionServlet,ActionServlet的核心是Struts-config.xml。
Struts框架的组成部分
struts-config.xml --------------------- Struts配置文件
ActionServlet --------------------- 控制器
Action Class --------------------- 包含事务逻辑(Action类,每一个Action类对应一个业务逻辑组件(javabean、ejb))
ActionForm --------------------- 显示模块数据
以上就是Struts已经架构好了的一个“半成品”框架
另外在Struts框架中还有
ActionMapping --------------------- 帮助控制器将请求映射到操作(也就是在struts-config.xml中配置将哪一个*.do请求映射到哪一个action类)
ActionForward --------------------- 用来指示操作转移的对象(比如成功的情况转到成功页面,失败的情况转到失败页面)
ActionError --------------------- 用来存储和回收错误
Struts标记库
***struts-config.xml***
struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握struts-config.xml是掌握struts的关键所在。
struts-config.xml的FormBean部分
<struts-config>
<!--Form Bean Definitions-->
<form-beans>
<form-bean name="testform" type="com.cjea.test.TestForm" />
</form-beans>
struts-config.xml的全局转发部分
<!--Global Forward Definitions-->
<global-forwards>
<forward name="failure" path="bad.jsp" />
<forward name="success" path="/good.jsp" />
</global-forwards>
struts-config.xml的action部分
<action-mappings>
<action path="/test/test" type="com.cjea.test.testAction" name="testform" scope="request">
<!--(注意,这里是一个test.do,在jsp页面中的action请求维test.do,实际上在struts-config.xml中将其映射到type="com.cjea.test.testAction"这个实际的action类中处理,name指代的是formbean。也就是说ActionServlet将客户请求的表单数据转发给action类testAction之前,先将jsp表单中的数据填充到testform这个FormBean中,再将请求转发给testAction这个action类)-->
<forward name="success" path="/test/good.jsp" />
</action>
</action-mappings>
</struts-config>
ActionServlet的基本功能
1、截获用户的Http请求
2、把这个请求映射到相应的Action类
3、创建一个ActionForm bean实例,将form请求放入formbean的实例中
另外还有
调用Action实例的perform()方法
将ActionForm bean,Action Mapping对象,request和response对象传给Action的perform()方法
perform返回一个ActionForword对象,根据方法执行情况转到相应的jsp页面
Action Classes
Action类是业务逻辑的一个包装。Action类的用途是将HttpServletRequest转换为业务逻辑。
ActionForm
ActionForm维护Web应用程序的会话状态。
ActionForm是一个抽象类,必须为每个输入表单模型创建该类的子类。
基本思路:
1、继承Action类创建子类
2、继承ActionForm创建FormBean
3、修改struts-config.xml
反复强调:Struts控制流
1、表单提交数据给一个带.do后缀的URL
2、该地址被struts-config.xml映射到一个Action object,该Action object的execute方法处理请求:execute有一个参数为Form Bean,它自动填充表单数据
3、Action object然后调用业务逻辑和数据访问逻辑,把结果放到Result Bean中,并且把Bean对象存储为request,session,or application范围:Action使用mapping.findForward返回一个条件,并且这个条件被struts-config.xml映射到不同的jsp页面。
4、系统跳转到合适的jsp页面:bean:write标签用来输出Form Bean和Result Bean;可以使用bean:message标签输出定义在系统属性文件中的国际化消息。
出处:http://user.qzone.qq.com/10710121/blog/59
- 大小: 92.4 KB
分享到:
相关推荐
### Struts2运行机制详解 #### 一、Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它为开发者提供了构建可扩展、易于维护的Web应用程序的工具。Struts2不仅继承了...
Struts框架是Java Web开发中常用的一个开源MVC框架,由Apache软件基金会维护。它提供了一种组织应用程序的方式,使得开发者可以将业务逻辑、控制流程和表现层分离,从而提高开发效率和代码可维护性。在"struts框架的...
Struts框架是Java Web开发中的一种经典MVC(Model-View-Controller)框架,由Apache软件基金会维护。这篇“基于Struts框架的网上书店毕业论文”可能深入探讨了如何使用Struts来构建一个完整的在线图书销售系统。以下...
标题中的“Java开发struts框架包”通常指的是包含了Struts框架所需的各种库文件和配置文件的集合,这些文件对于搭建和运行基于Struts的Java Web项目至关重要。开发人员可以使用这些资源快速地初始化一个新的Struts...
7. **异常处理**: Struts提供了全局异常处理机制,可以捕获并统一处理应用程序中的运行时异常,这样可以使应用更加健壮。 8. **Tiles框架集成**: Struts可以与Tiles框架集成,实现页面布局和重用。Tiles允许开发者...
9. **异常处理**:Struts框架提供了一套统一的异常处理机制,可以捕获和处理运行时错误,确保系统的健壮性。 10. **国际化与本地化**:系统可能支持多语言,因此需要实现国际化和本地化功能,这涉及到资源文件的...
Struts2是一个强大的Java Web应用程序框架,用于构建和部署企业级的MVC(Model-View-Controller)架构的Web应用。这个框架简化了开发过程,提供了丰富的特性来处理请求、控制流程、展示视图以及与数据库交互。在本文...
总之,配置Struts框架涉及多个方面,包括导入必要的库、编写Action、配置struts.xml、处理视图以及理解拦截器机制。理解并掌握这些知识点,将有助于你构建高效、稳定且易于维护的Java Web应用。
Struts框架是Java Web开发中常用的一个开源MVC框架,由Apache软件基金会维护。它提供了一种组织应用程序的方式,使得开发者可以将业务逻辑、控制流程和表现层分离,提高代码的可维护性和可复用性。本教程将详细介绍...
### 使用Java反射机制简化Struts框架逻辑控制 #### 引言 在当今的软件开发领域,J2EE平台上的Struts框架因其强大的可扩展性和可重用性而受到广泛青睐,尤其是在构建大型企业级应用中。然而,Struts框架的控制层...
在使用Struts框架.jar包时,我们需要将其导入到项目的lib目录下,确保运行时能够正确加载到Struts的相关类。此外,还需要在Web应用的web.xml文件中配置Struts的初始化参数,比如ActionServlet的映射路径和struts-...
Struts框架是Java Web开发中的一个经典模型-视图-控制器(MVC)框架,它为构建基于J2EE的应用程序提供了结构支持。本资源"Struts框架之hello...同时,理解并实践这个例子有助于你掌握MVC模式和Struts框架的核心机制。
在这个“J2EE的框架搭建 Struts框架的搭建”主题中,我们将深入探讨如何设置Struts2框架以及它所包含的关键组件。 首先,让我们了解一下Struts2的核心概念。Struts2的核心是Action类,它是业务逻辑的入口点。当用户...
4. **拦截器**:拦截器是Struts2的一大特色,它们按照预定义的顺序在Action执行前后运行,可以实现日志记录、权限检查、数据校验等功能,增强了框架的灵活性和可扩展性。 5. **结果类型**:Action执行后,会返回一...
**Struts核心组件及运行机制详述**是理解框架工作原理的关键。核心组件包括ActionMapping负责映射请求到Action,ActionForm用于封装表单数据,而Interceptor(拦截器)在Action执行前后执行预定义的任务,如日志记录...
Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它为构建基于J2EE的Web应用程序提供了强大的支持。在"Struts2框架实现图书管理系统"这个项目中,我们将深入探讨如何利用Struts2来设计和...
这个"Struts框架 Jar包.rar"文件包含了运行Struts框架所需的核心库和其他相关组件,使得开发者能够更方便地构建可维护、可扩展的Web应用。 Struts框架的核心组件包括: 1. **Struts Action**:这是框架的控制器部分...
通过分析和运行这个示例,我们可以进一步理解和实践仿struts框架的使用。 总结来说,仿struts框架是对原版Struts的一种学习和实践,它帮助开发者巩固MVC模式的理解,掌握Web应用的开发流程,并且能够自定义和优化...
7. **插件系统**:Struts2拥有强大的插件机制,可以方便地扩展框架功能,如Tiles插件用于布局管理,Ajax插件提供异步交互支持等。 8. **注解支持**:Struts2支持注解配置,可以减少XML配置文件的编写工作,提高开发...
此外,Struts框架还提供了一套强大的拦截器机制,可以对Action调用前后进行额外操作,如日志记录、权限验证等。在struts.xml中,你可以看到拦截器栈的定义,这些拦截器会在Action执行前和后被调用。 关于视图层,...