现在的位置: 首页 > 综合 > 正文

小议MVC模式

2013年02月12日 ⁄ 综合 ⁄ 共 1711字 ⁄ 字号 评论关闭

MVC是一种设计模式,是Model-View-Controller的缩写。它把应用程序分为3个部分:

1.  模型(Model

它代表了应用程序的核心功能,负责处理用户的数据,实现业务逻辑,为视图提供显示所用的数据,而且可以被多个视图所共用。

2.  视图(View

它主要是指与用户交互的界面,它接收用户的输入,但并不包括任何实际的业务处理,它只是简单地将数据转交给控制器,同时,它负责展现模型传递过来的数据,当后台模型更新数据时,视图就会更新它的显示。

3.  控制器(Controller

控制器负责接收用户的请求和数据,再由它来做出判断将请求和数据交由哪个模型来进行处理,最后调用视图来显示模型返回的数据。

6-25-1.JPG

视图接收来自用户的数据和请求,并将这些发给控制器,控制器接收到请求后,对请求进行判断,并选择合适的业务处理模块来完成用户的请求。当请求处理完成后,模型就通知控制器,并选择合适的视图来展示处理结果给用户。

MVC模式的好处:

(1)       多个视图可以共享一个后台模型,这就为在一个应用中为客户提供多种用户界面提供了便利。当需要修改界面时,由于表示和业务逻辑分开,因此不需要改动后台模型,而可以直接修改界面。

(2)       由于实现和界面独立,因此模型只需要提供接口提供给上层调用,从而实现信息封装和隐藏。当需要修改模型时,只要保证接口不变,原来的上层程序就可以不变。而由于模型是面向接口编程,因此可以使用不同的实现来替换模型。

控制器作为介于视图和模型间的控制组件,能够更好地维护程序流程,选择业务模型,选择用户视图,使程序的调用规则更加清晰。

Java Web的实现模型

1,  模型1JSP+javaBean

 

6-25-3.JPG

这里,jsp充当控制器和视图的双重角色,javaBean则是控制器。Jsp直接调用后台模型来进行业务处理,同时,再由jsp返回处理结果到用户界面。优点是:模型简单,对于小型系统很实用。但缺点是:HTML标记和java代码混合,不利于维护,设计和程序没有分开,合作开发复杂。

2,模型2JSP+Servlet+JavaBean

6-25-4.JPG

不再用jsp做控制器了,而是使用Servlet作为控制器,jsp则单纯负责显示逻辑。客户向服务器发送请求时,Servlet接收请求,并根据自己的逻辑判断来调用相应的javaBean来处理用户的请求,而javaBean负责业务逻辑的处理和数据持久化等任务,等处理完成,javaBean返回结果,由Jsp将结果返回给客户浏览器。
   这种结果清晰地划分了表示,控制,模型3层,很好地实现了MVC的设计思想。

3。Struts模型(基于模型2)

6-25-6.JPG

   struts是著名的Apache开发的一套用于构建java Web应用程序的框架。它的目标是分离Web程序的表示层,控制层和后台功能层,也就是MVC模式的实现。但和模型不同的地方在于,Struts提供了它自己的控制器组件,并且后台可以和JDBC,EJB,或者和Hibernate技术集成,视图方面,Struts使用了Jsp技术,并还可以将标记库技术,Velocity模板,XSLT技术结合起来。Struts采用了ActionServlet和Action来代替模型中的Servlet来作为控制器。在Struts中,用户请求都由ActionServlet接收,然后根据用户请求的样式到struts-config.xml.中查找对应的子控制器,也就是对应的Action。由Action来执行具体的控制器功能,并且调用相应的后台模型来完成业务逻辑的处理。Action执行它的execute()方法,返回一个ActionForward对象给ActionServlet,由ActionServlet对这个对象进行分析,并根据struts-config.xml来转发请求到另一个Action或者Jsp页面。用户通过视图表单发送数据时使用了一个ActionForm,它的作用是将用户提交的数据打包成一个Bean对象。而对于模型部分, Struts没有过多的限制,一般采用EJB或Hiberater等来实现模型部分。

4,其他著名MVC框架
   WebWork等。。。。

抱歉!评论已关闭.