zoukankan      html  css  js  c++  java
  • 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式

     作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题。

    【出现频率】

    【关键考点】

    • MVC的含义
    • MVC的结构 

    【考题分析】 

      在java Web开发中,存在两种普遍的开发模式,通常成为模式1和模式2。模式1使用JSP+JavaBean技术将页面显示和业务逻辑分开,由JSP来实现页面的显示,JavaBean对象来保存数据和实现业务逻辑。客户端直接向JSP发出请求,JSP做出相应的响应,并调用JavaBean对象,所有的数据通过JavaBean来处理,然后再返回JSP,由JSP生成最后的返回结果,模型1的结构图如下所示:

            

           在模型一中,JSP往往会嵌入控制请求流程的代码和部分逻辑代码,如果把这部分代码提取出来,由一个单独的角色来承担,该角色也就是控制器,则此时就构成了    模型2,模型2就符合了MVC的设计模式,即模型--视图--控制器Model--View--Controller)。

      MVC的架构的Web程序被分割成若干逻辑部件,使得程序开发编程变的更加容易。它把对象按照功能的不同分割成3个部分,主要目的就是为了将各种对象的耦合度降到最低。被分割成的3个部分为:模型(Model),视图(View),控制器(Controller)

    • 模型(Model):代表了应用程序的数据和处理这些数据的规则。当模型发生变化时,它会通知视图,并为视图提供查询模型相关状态的能力。
    • 视图(View):用来组织模型的内容,它从模型中获取数据,然后将数据展现给客户,该角色往往又JSP承担。
    • 控制器(Controller):负责从客户端接受请求,并把这些请求转换为某种行为。这些行为往往又模型来实现,这些行为完成以后,再选择一个视图来展现给客户。   

      下面简单介绍一下最基础的开发模式(JSP-Servlet)来构建一个MVC架构模式,后来的那些框架都是在此基础上增加的,代替相应的组件实现MVC的设计模式的。

    (JSP-Servlet)开发中,由Servlet来充当控制器的角色,它接受请求,根据请求信息的不同将它们分发给合适的JSP页面来作为用户的响应,同时,Servlet还需要实例化一个JavaBean对象,JSP就可以通过使用JavaBean的相关标签(如<jsp:getProterty>)来的到JavaBean的数据,结构如下图所示:

                   

       采用模型2,可以将页面的显示,业务逻辑的处理和流程的控制很清晰的分离出来。JSP负责数据的显示,JavaBean负责业务逻辑的处理,Servlet负责流程的控制。MVC模式使得Web应用程序很容易扩展和维护,因为各个部件的功能不同,可以由不同的人进行开发和维护。例如,前端攻城狮专门负责JSP页面,充分发挥她们的美术和设计才能,后台攻城狮负责业务逻辑的实现。

    Struts1框架是如何体现MVC模式的

      虽然struts1现在基本由于使用不方便基本已被struts2所替代,但许多老的项目还是用struts1写的,所以有必要对struts1的框架了解一下,毕竟它曾经也驰骋疆场数载呢,现在依然在某些项目中还能看到它的身影。

      struts1的控制器(Controller)由ActionServlet、Action和struts-config.xml组成。ActionServlet是struts的入口,所有的请求都会通过它来处理,然后由它来决定相应的Action来处理请求。Action代表了一次动作,如用户注册、购买商品等,开发者的业务逻辑代码也会在这里添加。配置文件struts-config.xml是对整个struts的配置,包括ActionServlet应该将请求转发给那个Avtion,Action负责处理完成之后,又该由那个JSP文件作为响应等。

      struts1的模型(Model)主要由ActionForm来实现,它有一点类似于JavaBean,包含了若干可读可写的属性,用于保存数据,也有数据验证的功能。一般来说,一个Action会配备一个ActionForm。

      struts1的视图(View)主要由JSP来实现。JSP显示的数据可以来自ActionForm,也可以是Action保存在作用范围(request,session,application)的数据。当然,使用struts自带的标签可以起到最大的简化作用。

      使用struts1开发Web应用程序以后,开发者的思考方式需要做一下改变,Action、ActionForm和JSP是一个整体了,每一个HTTP请求都需要它们三者协作来完成。JSP代表用户可以看到的东西,ActionForm代表的是数据,Action代表的是业务逻辑。下图所示的是struts1的MVC各个组成部分,以及它们是如何一起协调工作的。

                           

     以上就是struts1最核心的设计思想,开发人员大多数的时候只需要完成文件配置和Action,将大多数精力集中在Action中的业务逻辑实现上面。如果业务上有改动,只需要修改action即可,如果显示上有变化,也只需要修改JSP,两者实现了耦合,互不影响。下面这个图大概讲解一下Struts处理请求的过程和原理。

                                                

  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5281937.html
Copyright © 2011-2022 走看看