`
jackmisweijie
  • 浏览: 72414 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

Struts框架详解

阅读更多
1Struts应用框架介绍
1)框架
框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用。框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中的应用程序。
Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。
于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的FrameworkFramework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。
2为什么会出现应用框架
您只要细心地研究真实的应用程序,就会发现程序大致上由两类性质不同的组件组成,一类与程序要处理的具体事务密切相关,我们不妨把它们叫做业务组件;另一类是应用服务。
比如说:一个税务征管系统和一个图书管理系统会在处理它们的业务方面存在很大的差异,这些直接处理业务的组件由于业务性质的不同不大可能在不同的系统中重用,而另一些组件如决定程序流向的控制、输入的校验、错误处理及标签库等这些只与程序相关的组件在不同的系统中可以很好地得到重用。
人们自然会想要是把这些在不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架,再做一个新的东西时就不必白手起家,而是可以在这个基础上开始搭建。实际上,有些大型软件企业选择自己搭建这样的框架。
3)为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
3Struts Web应用框架
Struts Apache 软件基金会(Apache Software Foundation)资助的一个为开发基于MVC模式应用架构的开源框架,是利用Java ServletJSPXML等方面的技术来实现构建Web应用的一项非常有用的技术,它也是基于MVC模式的Web应用最经典框架。
Struts框架的主要架构设计和开发者是Craig R.McClanahanStruts 是目前Java Web MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。
StrutsServletJSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,主要由一系列的框架类、辅助类和定制的JSP标记库构成。开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。
 
 
2、框架的组成
一个设计良好的框架一般分为三层:
1)接口层
这一层要尽量使用interface,在这一层中你要考虑到你现在的、将来的可能支持的功能,但不需要去实现它,只定义到接口层次就可以了。如Struts中的插件接口PlugIn
2)抽象层
这一层要针对你当前的需求做定制,对你的需求中的通用逻辑做实现。这一层应该出现大量的抽象类。如Struts中的ActionServletActionActionForm等类。
3)实现层
不用说了,把前面两层没有做掉的事情在这一层都做了吧。如Struts中后台实现的各种功能
3、为什么要提出Struts
1)背景
由于我们开发Web应用的复杂度随着系统的复杂度的要求越来越来复杂。特别是在代码重用,代码移植、代马可插扒等问题上出现了许多重复开发、维护困难等。从而提出了Struts开发框架。它的设计目的是从整体上减轻构造企业Web应用的负担,并提供国际化和数据库连接池支持。
Struts 是一组相互协作的类、servlet JSP 标记,它们组成一个可重用的 MVC 2 设计。这个定义表示 Struts 是一个框架,而不是一个库,但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。
 
2)采用Struts的优点
在实际开发中,MVC框架开发相当费时,Struts 实现了MVC这种框架,但又扩充了该MVC框架。这样使得系统的开发就像“填空”一样进行,相当快速。
l  采用Strust可以加快开发速度、增强系统的灵活性、降低系统的藕合性(  分工明确:业务层与表示层分开,使得管理人员可以在小组内分配责任。网页设计人员与JAVA程序员各司其职。
l  简化页面:使用标记,把逻辑处理的代码分离开来。
l  通过将问题划分为更小的组件,当技术空间或问题空间中出现变化时,您就有更多的机会重用代码。
3Struts的缺点
l  有限的适用范围:Struts 是一种基于 Web MVC 解决方案,所以必须用 HTMLJSP 文件和 Servlet 来实现它。
l  J2EE 应用程序支持
l  复杂性:在将问题分为几个部分的同时也引入了复杂性(在强健性增强的同时,也意味着复杂性的增加)。
4Struts压缩包内容
下载后的*.zip包文件包含两个目录,libwebapps。在lib目录中有使用struts创建应用程序是所需的文件:
文件
描述
jdbc2_0-stdext.jar
包含JDBC2.0 Optional Package API类。如果我们要使用struts提供的数据资源,就需要将这个文件拷贝到WEB-INF\lib
Struts.jar
包含struts中所有的java类。同样也需要拷贝到WEB-INF\lib
*.tld
标记库描述器文件,描述了多个struts标记库中的自定义标记。同样要拷贝到WEB-INF\lib
webapps目录下有如下文件:
Web应用程序
描述
Struts-blank.war
一个简单的web应用程序
Struts-documentation.war
包含struts站点上所有struts文档
Struts-example.war
Struts很多特性的示范
Struts-exercisetaglib.war
主要用于对自定义标签库进行增加而使用的测试页,但也可以示范如何使用struts标记
Struts-template.war
包含struts模板标记的介绍和范例
Struts-upload.war
一个简单的例子,示范如何使用struts框架上传文件
 
5Struts的整体框架
1Struts框架的MVC组件结构图
struts框架中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
StrutsModel部分提供了ActionActionForm两种Bean对象:所有的Action处理器对象都是开发者从StrutsAction类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。
Struts提供的ActionForm组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和requestresponse对象进行数据交互。
2Struts框架的处理流程
 
 
l  首先,控制器(ActionServlet)进行初始化工作,读取配置文件(struts-config.xml),为不同的Struts模块初始化相应的ModuleConfig对象。比如配置文件中的Action映射定义都保存在ActionConfig集合中。相应地有ControlConfig集合、FormBeanConfig集合、ForwardConfig集合和MessageResourcesConfig集合等。
l  Struts框架的处理流程清楚的体现了MVC系统的特点,所有的页面请求都将发送到Struts的前端控制器ActionServlet中(因此如果要进行前置处理,可以继承ActionServlet并重写process()方法),同时ActionServlet也将根据struts-config.xml配置文件中的设置(<action>标签)来决定转向到那个后端控制器Action类。
l  当页面中的Form表单被提交时,ActionForm将自动地封装和处理该Form表单中的数据。同时在Action的子类中可以存取存储在ActionForm中的Form表单数据。
l  Action的子类将处理所获得的存储在ActionForm中的Form表单数据,处理和响应客户请求,它还调用后台的JavaBean组件完成具体的业务逻辑。同时也按照在struts-config.xml文件内的forward标签内容(如<forward name="sayHello" path="/sayHello.jsp"/>),将结果交由某个JSP页面显示。
3Struts体系组成
       Struts体系可以看成两个相对独立的部分:
第一个部分是Struts API,用于编写支持Struts的应用组件;
第二部分是StrutsJSP标记库,由htmlbeanlogictemplate四个标记组成。
Struts的两个部分有着各自不同的用户。对于规模较小的项目,同一个用户可能同时使用这两个部分;但对于规模较大的项目,通常开发者使用API组件,而负责HTML页面布局的人使用标记库。
4struts-config.xml配置文件
框架中的模型(M)、视图(V)、控制器(C) 三个部分是通过struts-config.xml配置文件将其联系在一起。一个标准的struts-config文件包含如下结构,有一点要引起大家的注意的,就是,struts-config.xml中配置的各个项目是有一定的顺序要求的,几个主要项目的顺序大致是这样的:
?xml version="1.0" encoding="UTF-8"?
!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
注意:各个标签项目是有一定的顺序要求的
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd
struts-config
data-sources / // 定义数据源
form-beans / // 定义ActionForm
global-exceptions / // 定义全局异常
global-forwards / // 定义全局转向url
action-mappings / // 定义action
controller / // 配置Controller
message-resources / // 配置资源文件
plug-in / // 配置资源文件
/struts-config
5Struts与其它框架的不同
       Struts应用中,有一个称为ActionServlet的主调度程序(或称为分配器)。不过,并非所有的请求都必须通过ActionServlet(以“*.do”结尾的URL都是Struts请求)。用户的请求目标可以是非Struts的页面,也可以是那些使用了Struts标记库但不使用Struts请求分配服务的页面。这正是Struts体系的优点之一:按需使用。许多编程框架要求你要么不用,要么全部使用,而且一旦你决定使用,以后要悔改从前的错误就会付出高昂的代价。Struts按需使用的优点与这类系统形成了强烈对比。
7
3
分享到:
评论
2 楼 zhanzhenguo123 2008-07-15  
LZ可不可以弄一篇SPRING的作对比??
1 楼 spiritfrog 2008-07-15  
虽然struts很老了, 不过lz这贴还是可以做入门贴的

相关推荐

    MVC原理(struts框架详解).

    MVC原理(struts框架详解), Struts 质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑

    实验指导\第二章Struts框架详解.doc

    Struts框架详解 Struts是Java Web开发中的一个开源MVC框架,由Apache软件基金会维护。它提供了一种结构化的方式来构建应用程序,使得开发者可以更有效地处理请求、控制流程、展示视图,以及管理业务逻辑。本实验...

    Struts框架详解.doc

    Struts框架是Apache软件基金会开发的一个开源Web应用框架,专门用于构建基于Model-View-Controller (MVC)模式的应用程序。这个框架的核心目标是简化Java Web应用的开发过程,通过集成Servlet、JSP、自定义标签和信息...

    Struts框架讲解

    Struts框架是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在1990年代末由Apache软件基金会的Jakarta项目推出。MVC模式是一种将业务逻辑、用户界面和数据访问分离开来的方法,使得代码更...

    基于MVC模式Struts框架

    ### 基于MVC模式的Struts框架详解 #### 摘要 Struts框架是一种流行的、基于MVC(Model-View-Controller)模式的Java Web应用开发框架,它极大地提高了开发效率并增强了应用程序的可维护性。本文旨在深入探讨Struts...

    struts2框架详解

    Struts2框架详解 Struts2是Java Web开发中的一款广泛应用的开源MVC框架,它构建在Apache Struts 1的基础上,提供了更为强大的功能和更好的灵活性。Struts2旨在简化Web应用开发,通过将表现层与业务逻辑层解耦,提高...

    struts框架及校验框架详解

    Struts框架是Java Web开发中的一个关键组件,它属于Java EE(J2EE)平台的一部分,主要用于构建...通过深入学习"struts框架及校验框架详解"文档,开发者能更有效地利用Struts来创建高效、稳定且易于维护的Web应用程序。

    浅谈Struts框架技术.

    **Struts框架详解** Struts框架提供了一种规范化的开发流程,主要组件包括ActionServlet、Action、ActionForm、ActionMapping和JSP等。ActionServlet作为前端控制器,根据web.xml中的配置处理HTTP请求,通过...

    dwz+struts 框架

    【DWZ+Struts框架详解】 DWZ与Struts是两个在Web开发中广泛应用的框架,它们结合使用能够构建高效且可维护的Web应用程序。DWZ全称为“Design for Web Zone”,是一个基于jQuery的前端UI框架,而Struts是Apache软件...

    Struts三大框架系统

    一、Struts框架详解: Struts 1是最初的版本,主要解决了JSP中的Model 1架构问题,将业务逻辑和表现层分离。Struts 2则是其后续版本,它融合了WebWork框架的优势,提供了更强大的Action、拦截器和结果映射等功能。...

    struts框架原理图

    ### Struts框架工作原理详解 #### 1. 请求处理流程 当用户通过浏览器向服务器发送请求时,Struts框架的工作流程大致如下: - **请求接收**:所有的HTTP请求首先被转发到Struts的核心控制器`ActionServlet`。 - **...

    ajax框架与struts框架的最佳结合讲解源码.rar

    Struts框架详解** Struts提供了一种组织应用的结构,将业务逻辑、控制流程和显示分离,使得开发和维护更加容易。主要组件包括Action类、ActionForm、ActionServlet、配置文件(struts-config.xml)以及JSP视图。...

    struts框架详细介绍

    Struts框架是一个基于MVC(Model-View-Controller)设计模式的Java EE应用程序框架,用于构建企业级Web应用。它的核心在于提供了一种结构化的、可重用的、易于维护的开发方式,使得开发者可以更专注于业务逻辑的实现...

    基于Struts的网上论坛BBS系统课程设计

    【Struts框架详解】 Struts是Java Web开发中的一款经典MVC(Model-View-Controller)框架,由Apache软件基金会维护。它简化了构建可维护、可扩展且结构清晰的Web应用程序的过程。在"基于Struts的网上论坛BBS系统...

    基于STRUTS的BBS

    **Struts框架详解:** Struts是Java EE平台上的一种流行框架,它提供了一种组织应用代码的方式,将业务逻辑、数据处理和用户界面分离。在Struts中,Controller组件由ActionServlet扮演,负责接收HTTP请求,调用相应...

    基于struts框架的学生管理系统

    《基于Struts框架的学生管理系统详解》 在Java Web开发领域,Struts框架是一个广泛应用的MVC(Model-View-Controller)框架,它为构建可维护、可扩展的Web应用程序提供了强大的支持。本项目“基于Struts框架的学生...

    struts1_详解

    ### Struts1 框架详解 #### 一、Struts1 基础与架构 **1.1 J2EE技术栈** Struts1框架是基于Java2平台企业版(J2EE)构建的,它依赖于以下技术: - **Servlet**:处理HTTP请求的基础接口,用于创建Web应用中的...

    Struts完整项目(含数据库)

    1. **Struts框架详解**: - **模型(Model)**:在Struts中,模型通常由JavaBeans或ActionForm对象来代表。它们负责业务逻辑和数据处理。 - **视图(View)**:视图是用户看到并交互的部分,通常由JSP页面或FreeMarker...

Global site tag (gtag.js) - Google Analytics