当前位置:首页 > 思想汇报 > Struts――基于MVC的Web开发框架|热门框架Vue开发WebApp
 

Struts――基于MVC的Web开发框架|热门框架Vue开发WebApp

发布时间:2019-01-11 04:01:34 影响了:

  摘要:Struts为Web应用提供了现成的通用的框架,可以大大提高Web应用的开发速度。首先介绍了MVC设计模式,接着分析了Struts如何实现MVC机制,最后揭示了Struts的不足之处。
  关键词:Struts;MVC;设计模式
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31677-02
  Struts: the Development of Web Framework Based on MVC
  LIU Jie
  (Suqian College, Suqian 223800, China)
  Abstract: Struts provides a universal framework for the application of Web,it can enhance the speed of Web application. First, the article introduces the MVC design pattern, then analyses how to use Struts to achieve MVC mechanism, last reveals the deficiency of MVC.
  Key words: Struts MVC Design Pattern
  
  1 引言
  
  由于Web应用的大型化、功能日趋复杂,使得传统的开发方式不再适合,一种新的设计模式―MVC模式(Model-View-Controller,模型-视图-控制器)被广泛应用于网站架构设计中。Struts作为MVC模式的一种实现,很好的结合了JSP、Servlet、JavaBean、Taglib等技术。
  
  2 Jsp Model1和Jsp Model2
  
  在早期的Java Web应用中,常会提到Jsp Model1和Jsp Model2这两个概念。在Jsp Model1模型中,JSP充当着控制器与视图的双重角色,JavaBean扮演了模型的角色。JSP直接调用后台模型进行业务处理,同时,再由JSP返回用户结果界面。这种模型对于一些小型的程序还是可以满足的,但对于大规模的系统就显得力不从心。因为倘若将JSP即当成控制器又当成视图,那么在页面代码中就会有大量的HTML标记与Java语言的混合物,这对程序的维护是非常不利的,而且对与页面开发人员和程序设计人员的分工将造成太多的约束,无法使它们并行工作,开发效率也就大大降低,故很难对整个系统进行有效的控制管理和开发。所以现阶段,开发者更倾向于使用Jsp Model2的模式进行Web系统的开发,就是我们所说的MVC设计模式。
  
  3 MVC设计模式
  
  MVC模式(Model-View-Controller,模型-视图-控制器)是20世纪80年代发明的一种软件设计模式,至今已被广泛使用。在MVC经典架构中,它把应用程序分为3个部分:模型、视图和控制器。它们之间的关系如图1所示:
  图1 MVC模式框架
  模型代表了该应用程序的核心功能,它负责处理用户的数据,实现业务逻辑。同时,模型还为视图的显示提供数据,并可被多个视图所共享。
  视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务逻辑。视图可以向模型查询业务状态,但不能改变模型。视图还能接收模型发出的数据更新事件,从而对用户界面进行同步更新。
  控制器负责接收用户的请求和数据,接着它会做出判断将请求和数据交由哪一个模型来处理,最后调用视图来显示模型返回的数据。
  故在一次程序运行的过程中,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。
  MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统是不错的选择。
  
  4 Struts框架
  
  作为一个Web框架,Struts很好的实现了MVC model2架构。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成。图2显示了Struts实现的MVC框架。
  图2 Struts实现的MVC框架
  图2实际上是在图1的基础上发展而来的,因此两者比较相似。但Struts为了很好的实现M、V、C 之间的松耦,对图1做了许多修改,主要体现在于Struts中的控制器这一层上。
  从图2中可以发现,Struts采用了ActionServlet和Action来替代图1中的Servlet组件。其实,ActionServlet就是原先的Servlet,只不过在基于图1的应用程序中,用户请求会由许多不同的Servlet接收处理。例如,可能登录时接收请求的是LoginServlet,而注册时调用的是RegisterServlet.在Struts应用程序中,所有的用户请求都由ActionServlet接收,然后根据用户请求的不同样式到Struts-config.xml文件中查找相应的子控制器,也就是Action。
  Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。对于小型简单的应用,Action类本身也可以完成一些实际的业务逻辑。对于大型应用,Action充当用户请求和业务逻辑处理之间的适配器,其功能就是将请求与业务逻辑分开,Action根据用户请求调用相关的业务逻辑组件。
  当ActionServlet控制器接收到用户请求后,把请求转发到一个Action实例。如果这个实例不存在,控制器会首先创建它,然后调用这个Action实例的execute()方法。Action的execute()方法返回ActionForward对象,它封装了把用户请求再转发给其它Web组件的信息。用户定义自己的Action类,即Action基类的子类时,必须覆盖execute()方法。
  下面以简单的用户登录页面来阐述Struts应用:用户正在浏览一个用Struts技术构建的网站主页,主页上有一个登录表单,用户填好登录名和密码,单击“登录”按钮,就激活了以下一系列过程:
  (1)用户的请求以HTTP方式传输到服务器上,接收请求的是ActionServlet。
  (2)ActionServlet接收到请求后,会查找Struts-config.xml文件来确定服务器上是否有用户请求的操作,此处用户请求的操作应为登录操作。如果没有,则返回一个用户请求无效的出错信息。
  (3)当ActionServlet找到用户请求的Action后,首先将用户输入的表单参数打包
  成一个ActionForm对象,这个ActionForm对象其实就是一个JavaBean,里面包含两个字段,分别是用户名和密码。接着ActionServlet再根据Struts-config.xml中的配置信息决定是否要执行ActionForm中的Validate方法。若Validate方法执行有错,则返回;否则,继续下一步。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   (4)系统生成一个用户所请求的Action的实例对象,将前面的ActionForm对象传递给它,运行它的execute()方法。这一步其实就是用户登录的控制器,在执行execute()方法时,可以调用后台模型验证登录名和密码是否正确等信息。
  (5)execute()方法执行结束前会生成一个ActionForward类型的对象并将之返回给ActionServlet,该对象的作用是告诉ActionServlet下一步应该跳转到哪里,加入后台模型检验用户名和密码正确,则ActionForward就跳转到一个登录成功的界面。ActionServlet将对之进行分析,其实就相当于接收到一个新的请求,重复(2)~(5)的过程,直到将某个界面返回用户为止。
  
  5 Struts的不足之处
  
  Struts做到了M、V、C三者的松耦,所以使用Struts来构建J2EE应用程序可以获得较大的灵活性,可重用性以及可维护性。但Struts也存在以下的不足之处:
  (1)使用structs难免要使用它的标记库,虽然标记库能大大提高开发效率,但对于初学者而言,却需要一个的过程,而且使用了标记库有时会损失页面的美观性。
  (2)Struts只是实现了HTTP的请求-响应机制。这种响应机制的缺点在于客户端或浏览器端的用户向服务器端发出请求后,服务器端才会将数据发往浏览器端。这样限制了程序员使用细粒度的事件,当然也降低了用户体验。因为现在的Web程序十分注重用户体验,这样的处理机制看来大大降低了Struts中MVC的灵活性。
  (3)Struts不适合较小的系统,如果一个页面里只处理一两个参数,处理的代码也只有几行,那用struts就如同大炮打蚊子。但对于较大系统,随着程序规模的增大,人工维护Struts-config.xml非常不方便,加大了维护的负担。
  
  6 结束语
  
  Struts是一种基于MVC设计模式的Java Web框架,它使系统开发过程各个模块更加细化。通过Struts框架,开发人员可以方便的将系统的画面显示、业务逻辑和数据操作以层次的形式加以分割,从而方便开发,提高效率,同时增强系统的可扩展性、维护性。通过本文, 可以使读者对MVC设计模式和Struts框架有一个清楚的了解。
  
  参考文献:
  [1] Ted Husted 著. 黄若波,等译. 实战Struts[M]. 北京:机械工业出版社,2005.
  [2] 孙卫琴 著. 精通Strtus:基于MVC的Java Web设计与开发[M]. 北京:电子工业出版社, 2005.
  [3] 邱哲,等著. Strtus Web设计与开发大全[M]. 北京:清华大学出版社,2006.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3