-------------------------------------------------------------------------------------------------------------------------------------
Struts简介:由apache提供的一个基于MVC的开源框架,与SUN公司无关,非J2EE规范。
-------------------------------------------------------------------------------------------------------------------------------------
使用目的:利用Struts可以构造我们整个软件系统的框架,可以将系统划分为三个核心的模块:
1.Model(模型层)
JavaBean:处理业务逻辑的--->业务逻辑层
处理数据访问逻辑的--->数据访问层
EJB:(SessionBean)
AtionForm:
2.View(示图层):Jsp;Html
3.Controller(控制层):
ActionServlet(控制器)
Actions(控制器)
RequestProcessor(请求处理器)
View和Controller属于表现层(Web层);
------------------------------------------------------------------------------------------------------------------------------------
Struts的优缺点:
有点:1.快速构建软件系统的框架结构,提高开发效率。
2.可以提高系统的可重用性,扩展性和可维护性。
3.比较适合于开发一些比较大型的项目。
缺点:1.Struts框架的运作机制相当复杂,不易理解。
2.用户开发的程序和框架绑定在一起,脱离框架就无法正常运行。
-----------------------------------------------------------------------------------------------------------------------------------
Struts中控制层的分类:
1.ActionServlet:这个类由Struts框架提供,它专门负责接受所有客户端的请求(*.do),但是它本身不会去处理请求,而是将请求交给RequestProcessor全权处理。
2.RequestProcessor:这个类也是由Struts框架提供,它接受ActionServlet转发过来的请求(request)并进行处理,它会根据struts-config.xml中的配置文件去调用不同的Action去处理客户端不同的请求。
3.Action:这个类也是由Struts框架提供,我们用户只要定义一个类继承Action即可。Action(功能是控制和转发请求)类似于Servlet,作为控制器去调用模型层中的业务接口方法,根据不同的返回结果不同的视图去展示数据。
------------------------------------------------------------------------------------------------------------------------------------
Struts模型层中的ActionForm
ActionForm 也是由Struts框架提供,只要定义一个类继承它即可。
使用目的:1.用于封装表单的字段信息;2.验证提交表单中的字段信息;3.可以对表单中的字段信息重新赋值显示。
一个Action可以配置一个ActionForm,也可以不配置。一个ActionForm可以被多个Action使用。
------------------------------------------------------------------------------------------------------------------------------------
Struts的工作流程
1.容器在装载并实例化ActionServlet实例对象后,在初始化方法init()中先去解析struts-config.xml文件,将其中的每个元素封装成struts框架中对应的一个个类的对象。如:
<form-bean>---->ActionFormBean对象
<action>----->ActionMapping
<forward>---->ActionForward
那么这些对象存放进ModuleConfigImpl维护的若干个HashMap中。
formBeans:(name,ActionFormBean对象引用);
actionConfigs:(path,ActionMappings对象引用)
放置全局的ActionForward对象
forwards(name,ActionForward对象引用)
例如:actionConfigs("/basic/register",ActionMapping对象引用);
2.不管表单时get还是post方法提交,ActionServlet对象调用process(request,response)方法,在该方法中构造一个RequestProcessor类的对象,若后调用它的方法process(request,response);并将request和response传递给该方法,接下来由RequestProcessor对象全权处理请求。
3.RequestProcessor对象根据请求URL中的ServletPath,到HashMap中查找对应的ActionMapping对象,若没有找到则直接返回404.
4.若找到ActionMapping对象,根据属性name的值找到相应的ActionForm,如果没有配置formBean,跳转到8.
5.判断是否存在ActionForm对象,根据scope.getAttribute(属性名)(属性名的值就是attribute指定的值)来查找对应的ActionForm对象,若没有,构造一个新的ActionForm对象,然后放置在scope指定的范围中。
6.调用ActionForm对象的reset()方法进行属性的初始化,再将表单字段封装到该对象的属性中,该方法要用户自己实现。
7.若validate为true,执行ActionForm对象中的validate()方法,若为false,不执行。
8.判断Action对象是否存在,从Action缓存中去查找对应的Action对象(其实就是一个HashMap对象,属性type指定的值,action对象引用)。若没有构造一个新的Action对象放置到该集合中。
9.Action对象调用execute()方法,返回一个ActionForward对象到struts-config.xml中。RequestProcessor对象,根据其中的属性信息forward或者重定向到path指定的资源。
分享到:
相关推荐
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
Struts 2整合Struts 1,允许开发者利用Struts 1已有的投资,同时享受Struts 2带来的优势,如增强的类型安全和更强大的拦截器机制。 在《Struts 2权威指南--基于WebWork核心的MVC开发》这本书中,作者李纲深入浅出地...
Struts1和Struts2是两个非常著名的Java Web框架,它们都由Apache软件基金会开发,用于构建MVC(Model-View-Controller)架构的应用程序。虽然它们在目标上相似,但在设计模式、功能特性和使用体验上存在显著差异。...
Struts1和Struts2是两个著名的MVC框架,它们都是Apache软件基金会的Apache Struts项目的一部分,用于构建基于Java的Web应用程序。然而,两者在设计和实现上有显著的差异。 1. **架构模式的区别** - **Struts1.x** ...
Struts1和Struts2是两个不同的版本,它们各自拥有独特的特性和功能,但在Java Web开发领域都扮演了重要角色。 **Struts1** Struts1是最早的版本,它在2001年发布,是基于ApacheJakarta项目的一个框架。Struts1的...
Struts 1.x 是一款基于模型-视图-控制器(MVC)设计模式的Java Web框架,它在早期的Web应用程序开发中占据了重要的地位。本教程主要针对初学者,旨在引导学习者掌握Struts 1.x的基础知识和使用方法。 在开始学习...
Struts1是一个经典的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)设计模式实现方式。然而,在Struts1的原生设计中,并没有内置拦截器(Interceptor)这一概念,这与后来的Struts2框架...
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的控制器部分。本实验项目旨在帮助开发者深入理解Struts1的核心概念和工作流程,以便更好地在实际...
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。Struts1在2000年代初期非常流行,为开发者提供了构建企业级应用程序的强大工具...
Struts1和Struts2是两个非常著名的Java Web框架,它们在设计模式、可测试性、输入处理和表现层等方面存在显著的区别。 首先,Action类的设计有所不同。在Struts1中,Action类需要继承一个抽象基类,这限制了Action...
### Struts1与Struts2的主要区别 #### 一、Action执行机制的不同 - **Struts1**: 在Struts1框架中,Action是基于单例模式的,这意味着所有的请求都会共享同一个Action实例。这就导致了如果在Action中保存实例变量...
这个压缩包包含了两个关键版本的Struts框架的电子书,即Struts1.x和Struts2.0的相关资料。 **Struts1.x** Struts1.x是最初的Struts版本,它极大地简化了Java Servlet和JSP的应用开发。Struts1的核心概念包括Action...
struts1 和 struts2所需jar包。主要包含以下内容: struts-1.3.10-all.zip struts-1.3.10-apps.zip struts-1.3.10-lib.zip struts-1.3.10-src.zip struts-2.3.4.1-all.zip struts.rar
Struts1是一个经典的Java Web开发框架,它引入了模型-视图-控制器(MVC)设计模式,使得开发者能够更有效地组织和管理Web应用程序。在本样例程序中,我们结合了Struts1与Maven,后者是一个项目管理和集成工具,能够...
Struts2是Struts1的升级版,它在Struts1的基础上引入了许多改进和新特性,提高了开发效率和应用性能。 Struts1是一个经典的MVC框架,它的核心组件包括Action、Form Bean、Action Mapping和Tiles等。Action是业务...
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,极大地简化了Java Servlet和JSP的开发。在本项目中,“struts1项目代码”提供了从头到尾的实现,包括...
Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。本实例旨在帮助初学者理解和掌握Struts1的基本用法,以及如何整合相关的jar包...
Struts1和Struts2是两个非常重要的Java Web框架,由Apache软件基金会开发,用于构建MVC(模型-视图-控制器)架构的应用程序。它们极大地简化了Web应用的开发,提高了代码的可维护性和组织性。 Struts1是早期的版本...
这里提到的"struts1和struts2相关jar包"分别指的是Struts框架的两个主要版本:Struts 1和Struts 2。 **Struts 1** Struts 1是最早的版本,于2000年发布。它是基于Java Servlet和JSP技术的,旨在解决在JSP应用中控制...