`

Struts概述1

阅读更多

概述
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概述01

    MVC与Struts概述01MVC与Struts概述01

    Struts介绍.doc

    二、Struts概述 1. Struts概念:Struts是Apache软件基金会下的一个项目,它提供了一种实现MVC模式的标准架构,包括一组预定义的组件和接口,使得开发人员能够更方便地创建结构化的、易于维护的Java Web应用。 2. ...

    精通struts:设计与开发

    二、Struts概述 1. Struts概念:Struts是Apache软件基金会的一个开源项目,它提供了一个基于MVC架构的Java Web应用框架,简化了开发过程,增强了应用的可维护性和可扩展性。 2. Struts的MVC实现机制:在Struts中,...

    struts1和struts2的区别

    ### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...

    Struts2 框架概述

    ### Struts2框架概述 #### 一、Struts2的历史背景与起源 Struts2作为一款备受关注的企业级Web开发框架,在Java Web开发领域占据着举足轻重的地位。尽管Struts2声称自身是一个全新的框架,但从其发展历程来看,这种...

    J2EE Struts 概述

    ### J2EE Struts 概述 #### 一、预备知识 ##### 1、Framework 随着软件开发领域的不断发展,特别是针对多层软件项目的开发,**框架(Framework)** 的概念变得日益重要。它指的是那些经过精心设计、具备良好可重用...

    Migrating From Struts1 To Struts2

    #### Struts1概述 Struts1是基于Java的开源Web应用框架,自2001年发布以来迅速获得了开发者们的青睐。它提供了一种结构化的MVC(Model-View-Controller)模式,用于构建企业级Web应用程序。Struts1的主要特点包括: ...

    Struts 1 学习文档

    1. Struts 应用概述 Struts 是一个 Web 应用程序框架,能够帮助 Java 开发者利用 J2EE 开发 Web 应用程序。Struts 拥有完整的社区与庞大的用户群体,为企业应用提供了良好的网络环境与充实的人才储备。 2. Struts ...

    Struts1与Struts2原理 区别详解汇总

    #### Struts1原理概述 **Struts1** 是一种基于MVC架构的开源Java Web框架,它主要用于构建动态网站和应用程序。Struts1的核心组件包括ActionServlet、ActionForm以及Action对象。 1. **ActionServlet**:作为整个...

    Struts概述

    Struts 1 是一个基于 Java 的开源 Web 应用框架,由 Apache 软件基金会开发。它遵循 Model-View-Controller (MVC) 设计模式,旨在简化企业级 Java 应用程序的开发。Struts 1 的出现是为了提供一个标准的 MVC 实现,...

    对Struts+Hibernate+Spring框架的全面详细的概述

    Struts1中的Model1和Model2设计模式分别代表了两种不同的开发方式,Model1将业务逻辑和表示逻辑混合,不利于维护,而Model2则遵循MVC模式,更有利于解耦和重用。 Hibernate是一个对象关系映射(ORM)框架,它简化了...

    Struts 1和Struts2 Jar包集合 你懂的

    - **概述**:Struts 1是最早的版本,于2000年发布,它是基于Servlet和JSP技术的,旨在解决JSP中控制逻辑分散的问题,将业务逻辑、数据访问和表示层分离。 - **核心组件**:ActionForm处理用户请求,Action转发请求...

    struts概述(我自己的学习笔记)

    3. ActionForm:在Struts 1中,用于封装请求参数,但在Struts 2中已被注解和POJO替代。 4. Struts配置文件:定义了Action、结果类型、拦截器等信息,是Struts的核心配置。 5. 拦截器(Interceptor):在Action调用...

    Struts1和Struts2的区别和对比.txt

    ### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...

    struts1教程

    1. **Struts1概述**:介绍Struts1的基本架构,包括控制器Servlet(ActionServlet)、Action类、配置文件(struts-config.xml)以及视图组件(JSP)等。 2. **MVC设计模式**:解释MVC模式如何在Struts1中实现,以及...

    struts1的工作流程

    ### Struts1的工作流程详解 #### 一、概述 Struts1是Apache Struts的第一个版本,它是基于Java Servlet/JavaServer Pages技术构建的MVC框架。对于初学者来说,了解Struts1的工作流程是非常重要的,这有助于理解...

    Struts1入门教程实例

    ### Struts1.x入门教程实例知识点详解 #### 一、Struts1.x基本概念与特点 **Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)...

    Struts1.x.pdf

    #### Struts 概述与MVC设计模式实现 Struts是Apache软件基金会赞助的一个开源项目,它为基于Java的Web应用程序提供了一种实现MVC(Model-View-Controller)设计模式的框架。在Struts框架中,MVC三个组成部分的职责...

Global site tag (gtag.js) - Google Analytics