基于MVC模式的Struts框架研究与应用

  摘要: Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。本文讨论了Struts框架实现MVC模式的原理与方法,给出了一个具体的应用实例。

  分布式企业应用软件结构复杂、涉及多种技术,对设计开发人员提出了很高的要求。在此情况下,运用设计模式――可复用的设计方案进行软件的设计开发十分必要。MVC模式已被证明是一种成功的软件设计模式,本文主要讨论了一种实现MVC模式的应用框架――Struts,并通过一个实例展示了Struts框架实现MVC模式的方法。

  MVC设计模式

  MVC(Modle-View-Controller,模型-视图-控制器)模式是Xerox PARC在20世纪80年代为编程语言Smalltalk-80所设计的一种软件设计模式,至今已被广泛使用,并被推荐为Sun公司J2EE平台的设计模式,其为开发交互式应用系统提供了一个优秀的设计模式,受到越来越多开发者的欢迎。

  MVC模式主要由3个部分组成:模型、视图和控制器,其结构如图1所示。


图1 MVC模式框架
  模型表示业务逻辑和业务规则等,在MVC的三个部件中拥有最多的处理任务。它可以用JavaBean和EJB等组件技术来处理数据库的访问。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

  视图是屏幕上的显示。模型进行操作之后,其结果就是通过视图来显示的。在视图中其实没有真正的处理发生,只是作为一种输出数据并允许用户操作的方式。

  控制器用于管理用户与视图发生的交互。一旦用户想对模型进行处理时,它不能直接去执行模型,而是通过控制器来间接地实现。控制器能从视图中取值,然后将相应的值传给模型进行处理。控制器接受用户的输入并调用模型和视图去完成用户的需求。

  由上述可知,MVC模式的处理过程是:首先由控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图返回数据,并通过表达层呈现给用户。

  MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统还是比较方便地。

  Struts框架

  Struts是Apache组织的一个开放源码项目。Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成如图2所示。


图2 Struts框架图
  由图2可以看出,在Struts框架中Controller功能由ActionServlet和ActionMapping对象构成,核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。

  Model部分由Action和ActionForm对象构成。所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过ActionForm组件对象实现了对View和Model之间交互的支持。

  View部分是通过JSP技术实现的。Struts提供了自定义的标记库,通过这些自定义标记可以非常好地和系统的Model部分交互,通过使用这些自定义标记创建的JSP表单,可以实现和Model部分中的ActionForm的映射,完成对用户数据的封装。

  基于MVC模式的Struts框架的应用

  下面通过一个具体实例说明如何应用Struts框架构建应用程序。该实例是一个全面预算管理系统中的预算资料模块,包括资料录入、资料查询、资料修改和资料删除四个功能,用于完成预算资料的录入、查询、修改及删除。

  具体在使用Struts框架时,对应各个部分的开发工作主要包括:

  1、构建视图

  在Struts框架中,视图的实现主要采用JSP技术,但与传统的JSP相比有两个显著的不同。

  首先,在Struts下使用JSP开发视图,在页面中没有包含任何的脚本程序,只是单纯的完成数据传送以及接收和显示返回的数据。对数据的处理以及页面的跳转都在业务层中来实现。这样做实现了业务逻辑和表示逻辑的完全分离,提高了一个应用程序的性能和可扩展性,并有利于程序的复用。

  第二,Struts框架提供了一组可扩展的自定义标记库,主要包括: Bean标记、 Logic标记、HTML标记和模板标记。通过使用标记,可以简化创建用户界面的过程,并且更好地实现数据的封装。通过使用这些自定义标记创建的JSP表单,可以实现和业务层中的ActionForm的映射,非常好地和系统的业务逻辑部分交互。

  下面给出资料录入页面的部分实现代码:

<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<title>
前期准备资料录入
</title>
<link rel="stylesheet" type="text/css" href="../images/mobile.css">
</head>
<body bgcolor="#ffffff">
<html:form action="/information/budgetinfoadd" enctype="multipart/form-data">
<table width="95%" border="1" cellspacing="1" cellpadding="2" bordercolor="#CBE7F8" align="center">
<tr bgcolor="#F2F9FD">
<td width="20%">类型:</td>
<td>
<html:select property="infoType" styleClass="input2">
<html:options collection="TypeList" property="id" labelProperty="typeName"/>
</html:select>
</td>
</tr>
……
</table>
</html:form>
</body>
</html>
  程序中首先引入了HTML、Bean和Logic标记库,然后用action指出调用的Action组件的绝对路径,标记<html:form>和</html:form>封装了表单数据,在业务层中用相应的ActionForm组件可以将输入的数据全部得到。

  可以看出在视图中没有进行任何的业务逻辑的处理,其主要作用是给出客户端显示的信息和处理结果,以及请求的转发,它是和用户交互的接口。

  2、构建模型

  模型采用JavaBean和EJB组件,设计和实现系统的业务逻辑。根据不同的请求从Action派生具体Action处理对象,完成“做什么”的任务来调用由Bean构成的业务组件,创建由ActionForm 的派生类实现对客户端表单数据的封装。

  下面以BudgetInfoAddForm这个ActionForm Bean进行说明:

……
public final class BudgetInfoAddForm extends ActionForm {
private String infoType;
private String title;
private String content;
private FormFile infoFile;
  这里表示BudgetInfoAddForm继承于ActionForm,在这个Bean中定义了视图中所要显示数据信息的参数,包括infoType,资料分类;title,资料标题;content,资料内容;infoFile, 资料文件。同时在BudgetInfoAddForm中提供了设定和访问这些参数的方法:

public String getInfoType()
public void setInfoType(String infoType)
public String getTitle()
public void setTitle(String title)
public String getContent()
public void setContent(String content)
public FormFile getInfoFile()
public void setInfoFile(FormFile infoFile)
public void reset(ActionMapping mapping, HttpServletRequest request) {
 title = null;
 content = null;
 infoFile = null;
}
  3、构建控制器

  在Struts应用框架中,中心控制器(ActionServlet)是由Struts框架本身所提供,开发人员一般无须对该ActionServlet进行再次开发;负责具体业务处理的Action类则是开发者开发实现的重点,在这些Action对象中会进行所有的业务操作,处理完毕,由Struts的ActionServlet转向到jsp页面,将处理结果返回给客户端。

  在预算资料模块中,实现了四个Action:BudgetInfoAddAction,用于资料录入; BudgetInfoContentAction,用于资料查询; BudgetInfoUpdateAction,用于资料修改;BudgetInfoDelAction,用于资料删除。

  4、建立配置文件

  Struts框架中有两个配置文件web.xml和struts-config.xml,用于配置Struts系统中的各个模块之间的交互。通过对这两个配置文件的配置,把Struts框架中MVC的各个部分联系起来,实现了一个真正的MVC系统。

  结束语

  Struts是一种基于MVC设计模式的企业级Web应用开发框架,它的设计目的是从整体上减轻构造企业Web应用的负担。其自带的标记库,能大大提高开发效率,同时提高了系统的可维护性和可扩充性。本文在总结Struts框架技术及其工作原理的基础上给出了一个应用实例,为今后更好的应用Struts框架开发Web应用程序提供了参考。

时间: 2024-08-19 02:47:49

基于MVC模式的Struts框架研究与应用的相关文章

基于MVC模式的Struts框架概述

作者:yarshray   关键字: Java  J2EE  MVC  JSP  Servlet  MVC  Struts 内容简介:        MVC设计模式成为了目前十分流行的一种设计方法.它是一种软件的设计方法模式.并且被大量的开发和实践所证明.因此本文通过介绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投入到软件开发中去.        本文内容注重理论和实践相结合,比较系统的从多层设计方式到分布式软件开发中所用到的技术,从而切入目前Sun公司退出的

基于MVC模式Struts框架研究与应用详解

分布式企业应用软件结构复杂.涉及多种技术,对设计开发人员提出了很高的要求.在此情况下,运用设计模式――可复用的设计方案进行软件的设计开发十分必要.MVC模式已被证明是一种成功的软件设计模式,本文主要讨论了一种实现MVC模式的应用框架――Struts,并通过一个实例展示了Struts框架实现MVC模式的方法. MVC设计模式 MVC(Modle-View-Controller,模型-视图-控制器)模式是Xerox PARC在20世纪80年代为编程语言Smalltalk-80所设计的一种软件设计模式

基于MVC模式的J2ME应用程序框架设计

1 J2ME应用程序框架的现状 Sun公司在1999年6月推出了J2ME(Java 2 MicroEdition,Java 2袖珍版).J2ME是专门为那些使用有限电源.有限网络连接以及有限图形用户界面能力的设备开发的,满足了消费电子和嵌入式设备开发的需要. 而7年后的今天,消费电子和嵌入式设备发展迅速.硬件设备速度越来越快,存储容量也越来越大,这也就自然带动了软件的发展.MIDP 2.0和CLDC 1.1也相继问世,各种各样的JSR也层出不穷. 硬件平台和软件平台的飞速发展自然带动了人们需求的

架构与模式-Struts框架的初步知识

架构 1.如何安装Struts: 首先到http://jakarta.apache.org/Struts下载Struts,建议使用release版,现在最高版本为1.2.6,有多种OS版本(windows,linus...),下载后解压开来,可以看到这个目录:lib和webapps,webapps下有一些WAR文件.假设你的Tomcat装在c:Tomcat下,则将那些WAR文件拷贝到C:Tomcatwebapps,重新启动Tomcat即可.打开浏览器,在地址栏中输入:http://localho

J2EE基础:MVC模式和Struts模式的理解

MVC方式通常在Smalltalk中用于建立用户接口.通过对MVC中蕴藏的设计模式可以帮你理解我们所说的"模式"的含义. MVC包括三类对象,Model是应用对象.View为其屏幕表示.Controller定义了对用户输入的处理(反应)方式.在应用MVC方式以前,通常将这三个对象的功能合到了一起,应用MVC分离了它们,为设计提供了灵活性和可重用性. MVC通过在view和model之间建立Subscribe/Notify协议,分离了view和model对象.View对象必须保证它的表示

基于MVC模式的数据库综合练习

一.准备         没什么好说的,直接上代码....        下面是web.xml <servlet> <servlet-name>list_user</servlet-name> <servlet-class>servlet.UserList</servlet-class> </servlet> <display-name>servlet_2</display-name> <servlet-

基于MVC的Struts在财务系统中的应用

摘要 对于项目开发人员来说,要加快系统的开发速度.提高系统的可维护性和可扩展性,首要的任务是划分好系统的层次结构,合理地设计表示逻辑.业务处理逻辑和数据逻辑.MVC模式就是一个很好的将表示.控制和业务处理相分离的解决方案,本文则主要介绍了Struts框架下的财务系统的设计和实现. 关键词  MVC模式:Struts框架:Web应用 中图分类号 TP391      文献标识码  A 引言 软件开发工作中遇到的很多问题都可能在以往开发同类软件的过程中同样出现过并且已经被解决,解决问题时所用到的好的

通过MVC模式将Web视图和逻辑代码分离

本文为原创,如需转载,请注明作者和出处,谢谢!     MVC模式(Model-View-Controller)常被用在Web程序中.如Struts框架就是一个基于MVC模式的Web框架.所谓MVC模式,就是将视图(也就是客户端代码,包括html.javascript等)和模型(和数据库及业务逻辑相关的Java代码)分开.并通过控制器将两者联系起来.这样做的好处可以使客户端开发人员和服务端开发人员的工作尽量分开,以使他们之间的干扰降到最低.     虽然象Struts这样的框架可以很好地Mode

基于MVC设计模式的WEB应用框架研究

摘要 MVC设计模式是基于J2EE的WEB应用开发的首选模式,当前许多流行的框架也都是基于MVC设计模式的.本文简要介绍了MVC设计模式和Struts框架,并提出了一种基于MVC模式的新型WEB应用开发框架--WebFramework,并对该框架的各个层次的组成.功能进行了详细的描述. 关键词 MVC设计模式:J2EE:框架:Struts 引言 随着开源软件的兴起,各种框架也纷纷出现,如Apache 的开源框架Struts就是典型的代表.在实际软件开发中运用这些框架,大大降低了J2EE开发的复杂