摘 要 Struts是当前Web应用开发中最为流行的框架之一。本文简要介绍了MVC(Model/View/Controller)设计模式和Struts框架的体系结构,然后结合一个实例,讲述了Struts实现MVC模式的Web应用的过程。结果显示Struts能够大大提高开发效率,同时提高系统的可维护性和扩充性。
关键词 MVC模式;框架;Struts;Web应用
0 引言
传统的Web应用开发工具(ASP、JSP)将页面显示、商业逻辑和数据处理大部分都集中在页面代码中,Web应用扩展维护比较困难,也不利于开发人员分工协作,在大型WEB应用开发中愈发显得力不从心。MVC(Model-View-Controller)设计模式将页面显示、商业逻辑和数据处理相分离,最大限度的降低系统各部分之间的耦合性,从而增强系统的可扩展维护性,提高代码重用率,使系统的层次结构更加清晰,易于分工协作。而Struts是一个为开发基于MVC模式的应用架构的开源框架。1 Struts框架的体系结构
1.1 MVC设计模式
MVC设计模式是一种“分治”的思想,它使应用程序的输入、处理和输出分开,把应用程序分成三个核心模块:模型(Model)、视图(View)和控制器(Controller)。Model用来储存应用程序的数据以及访问、维护这些数据的业务逻辑,View建立终端用户的表示层,Controller是模型与视图的接口,其作用是获取并处理HTTP请求,并调用相关的业务模型中的方法对请求进行处理,然后将对象模型层次处理后的结果返回到View。可见MVC设计模式的主要优点是实现了业务逻辑和显示逻辑的分离,提高了系统的可维护性、可扩展性、可移植性和组件的复用性。1.2 Struts框架
Struts是基于MVC的Web应用框架,由一组相互协作的类、Serlvet以及JSP TagLib组成。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成。Struts框架的体系结构如图1所示。下面分别从模型、视图、控制来看看struts的体系结构。 视图:主要是通过JSP技术生成页面完成视图,利用Struts提供的自定义标记库编写用户界面把应用逻辑和显示逻辑分离。Struts框架通过这些自定义标记建立了View和Model之间的联系,可以实现和Model部分中的ActionForm的映像,完成对用户数据的封装。图1 Struts体系结构 控制器:作用是从客户端接受请求,并选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中,控制器由ActionServlet和ActionMapping对象构成,核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求并分发到相应的动作类(Action类的子类)。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action对象之间的映射。 模型:在Struts中,Model可以分为系统的内部状态和改变系统状态的行为(业务逻辑)两部分。系统的内部状态常由一组JavaBean表示,业务逻辑由Action和ActionForm的类对象处理。Action对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交给合适的View以产生响应业务对象更新应用程序的状态。ActionForm可以派生子类对象,通过结合自定义标记库以实现对客户端的表单数据的良好封装和支持。Action对象可以直接对ActionForm进行读写,而不再需要和request,response对象进行数据交互。通过ActionForm对象实现了对View和Model之间交互的支持。 Struts-config.xml:用于建立Controller和Model之间的关系,将各部分紧密联系在一起。它描述了Controller所使用的把请求对应到具体处理的法则,同时它还描述了客户提供的数据与ActionForm组件的对应映射关系。
1.3 Sturts的工作流程
对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化ActionServlet,从struts-config.xml文件中读取配置信息,把他们存放到各种配置对象中。其具体工作流程如下: ⑴客户端(Client)通过本地浏览器(Browser)向服务器发出一个请求(HTTP Request)。 ⑵控制器(Controller)接收请求,即ActionServlet实现控制工作。它在struts-config.xml文件中寻找请求的URL,找到对应的Action。 ⑶Action类执行建立在模型组件基础上的业务逻辑,模型组件是和应用程序关联的。 ⑷一旦Action类处理完业务逻辑,它把控制权返回给ActionServlet,Action类提供一个键值作为返回的一部分,它指明了处理的结果AcLionServlet使用这个键值来决定在什么视图中显示Action的类处理结果。 ⑸当ActionServlet把Action类的处理结果传送到指定的视图中,请求的过程也就完成了。2 Web开发中的应用
以一个Web考试系统中的考生注册子系统为例,说明Struts在Web程序开发中的应用。考生在注册页面上输入考生名、密码等相关信息,若注册成功,控制将转向一个显示注册成功的页面,否则控制将转向一个显示失败的页面。 ⑴项目建立 struts可运行在多种Web服务器上,这里使用同样出自Jakarta项目的Web服务器Tomcat。首先展开struts的压缩文件到Tomcat的主目录webapps下,接着在目录webapps下新建目录testWeb,将webapps/Struts-example下的WEB-INF目录拷贝到test目录下,然后将test/WEB-INF下的src和classes目录以及struts-coufig.xml文件中内容清空。开发时,将JSP文件放在testWeb目录下,Java源文件放在testWeb/WEB-INF/src下,编译后的类文件放在testWeb/WEB-INF/classes下。 ⑵实现视图功能的用户界面的设计 JSP具有定制标记和包含Web组件的能力,可以实现定制的组件、容器和布局管理器,从而实现可扩展的、可重用的和可维护的Web应用界面。Struts中,JSP页面中利用Struts框架提供的taglib标记库的标记(如Struts bean,html,logic,template标记),能够大大提高开发效率。在该系统中,其注册页面reguserinfo.jsp概要如下:<%@page contentType=”text/html;charset=UTF-8” language=”java”%><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> //引用Struts bean标记<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> //引用Struts html标记<html:html locale="true"><head><title>RegisterUser</title></ head><body bgcolor="#FFFF"><html:errors/><html:form action="reguser.do" focus="userID" ><table border="0" width="100%"><tr> <th align="right" >UserName:</th><td align="left"><html: text property="userID"size="20" maxlength="20"/> </td></tr><tr> <th align="right" >Password:</th><td align="left"><html: password maxlength="20" size="20"
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />property="password" /></td></tr>
3 结束语
Struts是一种基于MVC设计模式的Java Web框架,它使系统开发过程各个模块更加细化。利用taglib获得可重用的代码;利用ActionServlet配合struts-config.xml实现对整个系统导航,增强了开发人员对系统的整体把握;用户界面、业务逻辑和业务控制的分离,使系统的层次结构更加清晰,易于分工协作,同时增强系统的可扩展性、维护性。参考文献
[1](美)Ted Husted, 黄若波,程峰,程繁科译. 实战struts [M]. 机械工业出版社.2005.5[2] 杨开英,刘榭. Struts框架的研究与应用[J]. 微计算机应用,2005.3[3] 张南平,朱富利.基于MVC模式的Struts框架的研究与应用[J]. 计算机技术与发展,2006.3[4] 李万龙,吴雪莉. 基于Struts框架的Web应用程序的实现[J], 计算机技术与发展,2006.4
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />
相关文章:
利用ObjectARX开发基于AutoCAD的法兰盘04-26
基于H.264的群集转码系统的设计04-26
业务协同远程项目管理信息系统建模与实现04-26
IP传真的分析与改进04-26
宽带门户网站身份认证系统设计04-26
连锁销售决策支持系统解决方案研究04-26
基于RBF神经网络的四声自动识别及应用04-26
基于网页结构挖掘算法研究04-26
在J2ME/MIDP中实现图像旋转04-26