我对MVC的理解

来源:互联网 发布:java解析json数组传参 编辑:程序博客网 时间:2024/05/17 00:18

MVCModel-View-Controller,模型检视控制器模式)是软件工程中的一种软件架构模式。它把软件系统分为三個基本部分:模型(Model),检视(View)和控制器(Controller)。

  

        MVC最早由Trygve Reenskaug1974年提出,是施乐帕羅奧多研究中心(Xerox PARC)在20世纪80年代为程式語言Smalltalk发明的一种软件设计模式。模型检视控制器模式的目的是實作一种动能的程式设计,使后绩对程式的修改和扩充套件见简化,並且使程式某一部分的重复利用成为可能。除此之外此模式透过对复难度的简化使程式结构更加直觉。软件系统透过对自身基本部份分离的同時也赋予了各个基本部分应有的功能。专业人员可以透过自身的专长分組:

  • 控制器- 负责转发请求,对请求进行处理。
  • 检视 - 介面设计人员进行圆形介面设计。
  • 模型 - 程式设计师编写程式应有的功能(实作演算法等等)、资料库专家进行资料管理和资料库设计(可以实作具体的功能)

 

模型(Model) 「资料模型」(Model)用于封裝应用程式的业务相关的资料以及对资料的处理方法。「模型」有对資料直接存取的权利,例如对资料库的存取。「模型」不依赖「检视」和「控制器」,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中资料的变化一般会透过一种重新整理机制被公布。为了实作这种机制,那些用于监视此模型的检视必须事先在此模型上注册,从而,检视可以了解在資料模型上发生的改变。(比較:观察者模式(软件设计模式))

检视(View) 检视层能夠实作资料有目的的显示(理论上,这不是必需的)。在检视中一般沒有程式上的逻辑。為了实作检视上的重新整理功能,检视需要存取它监视的资料模型(Model),因此应该事先在被它监视的资料那里注冊。

控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程式的流程。它处理事件並作出响应。「事件」包括使用者的行为和资料模型上的改变。

         MVC模式就好比桌面程序中的事件监听模式。强制性地将输入、输出、处理分开,使代码的编写条理更清晰。在刚学习servlet时,随着页面和功能越来越丰富,页面独立,却和servlet高度地耦合在一起,使得程序和页面的联系看起来非常地乱,给继续开发也造成了障碍。然而MVC模式帮我们解决了servlet的代码不清晰的问题,MVC结构帮我们把web的请求分开了来使我们能更好的来管理自己的servlet的结构,通过一个总的servlet来接受请求同时将这个请求转发到action上去,让action来进行处理和与数据库进行数据交互同时将数据处理后得到的页面地址传给接受请求的总servlet上在请求页面后传给web进行显示。

 

  在MVC中我们只使用到一个servlet,

 ControlServlet,用的所有求都提交给这个Servlet提交的据可分为两种:一种为户输出的业务信息,如料、一是用操作的型,如注、修改人信息等,我一般作用户动作;甚止可以认为面上每点提交铵钮或一个链结,就是一个动作。在web程中,区别这两种数据非常重要!一类是处理的数据对象,一类决定了用什么样的逻辑处理!显然后者更重要。

了便展,我使用servlet求路可以模糊配置的特点,所有的用户请求都发给主控servlet。那后台servlet中如何分用是何(需要用什么样逻辑处理)求呢?我web.xml义,在servlet的配置文件中我们将定义一个请求服务的后缀名例如下面代码中定义的就是.netjava他将所有的与这个servlet有观的请求以后缀名为.netjava结尾的请求都通过这里得到。

关键规则:所有求的路的格式{命令名字}.netjava<?请求参数>

我们MVC理框架结构有五部分成:

1.    ControllerServlet.java:求分控制器,解析求中的作名字,作工厂对象生成的求,理后返回的目地url,控制器再将请求和向目url

2.     ActionFactory.java:厂类将请求中的作名转换 servlet 可以用完成其工作的

3.     Action.java: 接口接口定所有作的公共接口。

4.     具体Action的实现类:实现Action接口的ActionFactory根据求中的名字建,用其具体实现的方法Request/Response象后,返回一URL由主控Servlet转发给。可以理解具体的Action实现类用于面上每一()

所有的请求在 servlet service() 方法中处理。结构图如下:

图片

 

MVC代码的实现。

我们先创建一个webservlet的项目在该项目下创建一个dbulit的包,到dao类包pojo类包在创建一个主控servlet类包,再写接口包和actionFctory包在创建实现action的包在写代码时我写的部分代码如下图片

图片

上面是主控servlet和actionfactory类主控servlet写了接受请求和得到请求的信息再对该信息进行处理之后将该信息交给对应的action进行处理再将处理之后的信息通过请求页面返还给web页面。Actonfactory类实现了在整个servlet中只存在一个action如果在servlet中存在就不创建action不存在就创建一个保证在servlet中永远只有一个servlet。

 

 

 

 

 

 

 

  

原创粉丝点击