概述
Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBeans,ResourceBundles与XML等标准技术,以及 Jakarta Commons 的一些类库。Struts有一组相互协作的类(组件)、Servlet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是一个传统 MVC设计模式的一种变化类型。
目的
Struts的目的是为了减少在运用MVC设计模型来开发Web应用的时间。
Struts的流程
服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。
以登陆为例:第一次进login.jsp会先实例化Form、把默认值(String默认为空字符串,整形默认为0)赋给表单元素。 输入用户名密码提交表单、提交到action属性的login.do,通过ActionServlet读struts-config.xml文件找到 action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方法。
控制器:ActionServlet的作用
Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。org.apache.struts.action.ActionServlet类实现的,这个类是javax.servlet.http.HttpServlet类的扩展。
Model部分:ActionForm和JavaBean
由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。 JavaBean则封装了底层的业务逻辑,包括数据库访问等。
View部分
该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。
注意:
系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。 业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
框架中所使用的组件
ActionServlet 控制器
ActionClass 包含事务逻辑
ActionForm 显示模块数据
ActionMapping 帮助控制器将请求映射到操作
ActionForward 用来指示操作转移的对象
ActionError 用来存储和回收错误
Struts标记库 可以减轻开发显示层次的工作
Struts配置文件
这是将struts组件结合在一起的东东:struts-config.xml。默认值
\WEB-INF\struts-config.xml。
配置文件可以定义:
全局转发
ActionMapping类 帮助控制器将请求映射到操作
ActionForm bean 显示模块数据
JDBC数据源
配置全局转发
全局转发用来在JSP页之间创建逻辑名称映射。
转发都可以通过对调用操作映射的实例来获得。
看看具体每个组件的作用
配置全局转发
<global-forwards>
<forward name="bookCreated" path="/BookView.jsp"/>
</global-forwards>
配置ActionMapping
ActionMapping对象帮助进行框架内部的流程控制,它们可将请求URI映射到Action类,并且将Action类与ActionForm bean相关联。ActionServlet在内部使用这些映射,并将控制转移到特定Action类的实例。
如:
<action-mappings>
<action path="/createBook" type="BookAction" name="bookForm" scope="request" input="/CreateBook.jsp">
</action>
<forward name=”failure” path=”/CreateBook.jsp”/>
<forward name=”cancel” path=”/index.jsp”/>
</action-mappings>
配置ActionForm Bean
<form-beans>
<form-bean name="bookForm" type="BookForm"/>
</form-beans>
配置JDBC数据源
ActionServlet类
框架中的控制器组件是有org.apache.struts.action.ActionServlet类实现的,这个类是javax.servlet.http.HttpServlet类的扩展。 Struts controller基本功能是:
1. 截获用户的Http请求
2. 把这个请求映射到相应的Action类,如果这是此类收到的第一个请求,将初始化实例并缓存。
3. 创建或发现一个ActionForm bean实例(看配置文件是否定义),然后将请求过程移植到bean.
4. 调用Action实例的perform()方法并将ActioForm bean,Action Mapping对象,request和response对象传给它。
5.perform返回一个ActionForword对象,此对象连接到相应的jsp页面.
ActionMapping类
将特定请求映射到特定Action的相关信息存储在ActionMapping中,ActionServelt将ActionMapping传送到Action类的perform()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null。
public ActionForward findForward(String name)
可在映射中动态添加ActionForward:
public void addForward(ActionForward forward)
可返回与映射关联的表单bean:
public String getName()
可返回映射的属性域(会话或请求)
public String getScope()
Action类
Action类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后,ActionServlet会: 为这个请求选择适当的Action 如果需要,创建Action的一个实例 调用Action的perform()方法 如果ActionServlet不能找到有效的映射,它会调用默认的Action类(在配置文件中定义)。如果找到了ActionServlet将适当的ActionMapping类转发给Action,这个Action使用ActionMapping找到本地转发,然后获得并设置ActionMapping属性。根据servlet的环境和被覆盖的perform()方法的签名,ActionServlet也会传送ServletRequest对象或HttpServletRequest对象。 所有Action类都扩展org.apache.struts.action.Action类。
ActionForm类
框架假设用户在应用程序中为每个表单都创建了一个ActionForm bean,对于每个在struts-config.xml文件中定义的bean,框架在调用Action类的perform()方法之前会进行以下操作: 在相关联的关键字下,它检查用于适当类的bean实例的用户会话,如果在会话中没有可用的bean,它就会自动创建一个新的bean并添加到用户的会话中。 对于请求中每个与bean属性名称对应的参数,Action调用相应的设置方法。 当Action perform()被调用时,最新的ActionForm bean传送给它,参数值就可以立即使用了。 ActionForm类扩展org.apache.struts.action.ActionForm类,程序开发人员创建的bean能够包含额外的属性,而且ActionServlet可能使用反射(允许从已加载的对象中回收信息)访问它。
ActionForward类
目的是控制器将Action类的处理结果转发至目的地。 Action类获得ActionForward实例的句柄,然后可用三种方法返回到ActionServlet,所以我们可以这样使用findForward(): ActionServlet根据名称获取一个全局转发 ActionMappin实例被传送到perform()方法,并根据名称找到一个本地转发
错误处理
struts提供了两个类来处理错误:ActionErrors和ActionError,它们都扩展org.apache.struts.action。ActionErrors保存着ActionError对象的集合,其中每一个代表了独立的错误信息。每个ActionError都包含了关键字,能够映射到资源文件中存储的错误信息,而这个资源文件是在ActionServlet初始化参数中指定的。
分享到:
相关推荐
MVC与Struts概述01MVC与Struts概述01
二、Struts概述 1. Struts概念:Struts是Apache软件基金会下的一个项目,它提供了一种实现MVC模式的标准架构,包括一组预定义的组件和接口,使得开发人员能够更方便地创建结构化的、易于维护的Java Web应用。 2. ...
二、Struts概述 1. Struts概念:Struts是Apache软件基金会的一个开源项目,它提供了一个基于MVC架构的Java Web应用框架,简化了开发过程,增强了应用的可维护性和可扩展性。 2. Struts的MVC实现机制:在Struts中,...
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
### Struts2框架概述 #### 一、Struts2的历史背景与起源 Struts2作为一款备受关注的企业级Web开发框架,在Java Web开发领域占据着举足轻重的地位。尽管Struts2声称自身是一个全新的框架,但从其发展历程来看,这种...
### J2EE Struts 概述 #### 一、预备知识 ##### 1、Framework 随着软件开发领域的不断发展,特别是针对多层软件项目的开发,**框架(Framework)** 的概念变得日益重要。它指的是那些经过精心设计、具备良好可重用...
#### Struts1概述 Struts1是基于Java的开源Web应用框架,自2001年发布以来迅速获得了开发者们的青睐。它提供了一种结构化的MVC(Model-View-Controller)模式,用于构建企业级Web应用程序。Struts1的主要特点包括: ...
1. Struts 应用概述 Struts 是一个 Web 应用程序框架,能够帮助 Java 开发者利用 J2EE 开发 Web 应用程序。Struts 拥有完整的社区与庞大的用户群体,为企业应用提供了良好的网络环境与充实的人才储备。 2. Struts ...
#### Struts1原理概述 **Struts1** 是一种基于MVC架构的开源Java Web框架,它主要用于构建动态网站和应用程序。Struts1的核心组件包括ActionServlet、ActionForm以及Action对象。 1. **ActionServlet**:作为整个...
Struts 1 是一个基于 Java 的开源 Web 应用框架,由 Apache 软件基金会开发。它遵循 Model-View-Controller (MVC) 设计模式,旨在简化企业级 Java 应用程序的开发。Struts 1 的出现是为了提供一个标准的 MVC 实现,...
Struts1中的Model1和Model2设计模式分别代表了两种不同的开发方式,Model1将业务逻辑和表示逻辑混合,不利于维护,而Model2则遵循MVC模式,更有利于解耦和重用。 Hibernate是一个对象关系映射(ORM)框架,它简化了...
- **概述**:Struts 1是最早的版本,于2000年发布,它是基于Servlet和JSP技术的,旨在解决JSP中控制逻辑分散的问题,将业务逻辑、数据访问和表示层分离。 - **核心组件**:ActionForm处理用户请求,Action转发请求...
3. ActionForm:在Struts 1中,用于封装请求参数,但在Struts 2中已被注解和POJO替代。 4. Struts配置文件:定义了Action、结果类型、拦截器等信息,是Struts的核心配置。 5. 拦截器(Interceptor):在Action调用...
### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...
1. **Struts1概述**:介绍Struts1的基本架构,包括控制器Servlet(ActionServlet)、Action类、配置文件(struts-config.xml)以及视图组件(JSP)等。 2. **MVC设计模式**:解释MVC模式如何在Struts1中实现,以及...
### Struts1的工作流程详解 #### 一、概述 Struts1是Apache Struts的第一个版本,它是基于Java Servlet/JavaServer Pages技术构建的MVC框架。对于初学者来说,了解Struts1的工作流程是非常重要的,这有助于理解...
### Struts1.x入门教程实例知识点详解 #### 一、Struts1.x基本概念与特点 **Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)...
#### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计模式的框架。在Struts框架中,MVC三个组成部分的职责...