首页 > 代码库 > MVC概述
MVC概述
学习MVC模式
一、MVC简介
MVC是Model-View-Controller的简称,即模型-视图-控制器。MVC是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。
1、模型(Model)
a、模型是应用程序的主体部分,模型表示业务数据和业务逻辑。
b、一个模型能为多个视图提供数据。
c、由于应用于模型的代码只需写一次就可以被多个视图重用,所以提高了代码的可重用性。
2、视图(View):
简单来说就是在页面上填写java代码实现显示。
详细来说视图是用户看到并与之交互的界面,作用有:
a、视图向用户显示相关的数据
b、接受用户的输入
c、不进行任何实际的业务处理
3、控制器(Controller)
a、控制器接受用户的输入并调用模型和视图去完成用户的需求。
b、控制器接受并决定调用哪个模型组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。
受理请求--->获取请求参数--->调用DAO方法--->可能会把DAO方法的放绘制放入request中--->转发或重定向页面
用实际的流程来说,相当于一个a.jsp向servlet发送一个get请求要求所有的学生信息,然后servlet的doGet()方调用模型层dao里的getAll()
方法返回学生的List对象,把得到的对象放入request中,然后请求转发到b.jsp,b.jsp对刚才转发过来的数据进行遍历,显示。dao对象当然是调用getAll()方法,把值返回List.
最后,用流程图来总结一下:
二、Java Web应用程序的主要组件
1、Servlet
Servlet是用Java语言编写的,它是一个Java类。因而Servlet遵守所有Java语言的语法规则,并且它可以调用一般Java程序可以调用的系统包。
Servlet是在服务器端运行的。它编译后的“.class”文件被服务器端调用和执行。Web服务器使用该class文件去处理浏览器请求,并将处理的结果返回到客户端。
Servlet的主要功能是用来接受、处理客户端请求,并把处理结果返回到客户端显示。其过程如下所述。
a、客户端把请求送到Servlet处理
b、Servlet处理请求
c、Servlet把请求的结果返回到客户端显示
2、JavaBean
JavaBean组件就是一些遵循特定接口格式的Java类。这种接口格式对Java类的方法命名、底层行为、继承与实现等有特定的要求。在Java Web开发中,JavaBean往往用来封装程序的业务逻辑,它们是可以重用的组件。通过使用JavaBean,JSP文件中的Java脚本可以大大地减少,从而使JSP更容易维护。
JavaBean在Java Web开发中主要用来处理业务逻辑。JSP或者Servlet可以调用JavaBean去处理复杂的操作。
JavaBean的属性用于表示其内部状态。在Java Web开发中,其属性主要用来存储中间数据。例如,可以用从数据库中取出的数据来设置JavaBean的属性。这样JSP文件就可以在需要时从JavaBean中把这些值取出,然后在客户端将其显示出来。
我们常用<jsp:useBean>这个标签在JSP文件中使用JavaBean。在JavaBean中,可以使用JDBC进行数据库操作,比如连接数据库、查询数据库、向数据库中插入数据等。在JSP中使用Java脚本虽然也可以进行数据库操作,但是这样会造成页面过于复杂、臃肿,维护起来非常不方便,这种缺点在大型项目中更加突出。使用JavaBean操作数据库,然后把操作的结果返回给JSP页面去显示,这样就减轻了JSP的负担,使其更专注于页面显示。
三、Java Web解决方案(开发方法)
JSP页面编程
JSP+JavaBean设计模式
JSP+Servlet设计模式
JSP+Servlet+JavaBean设计模式
四、常用的Java Web的MVC框架
1、Spring MVC
它的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。核心是 DispatcherServlet,它的作用是将请求分发给不同的后端处理器(controller)。
2、Struts
它是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。Struts就是MVC中的C的角色,因为它主要是负责action,处理各种请求。
五、MVC的优点
1、低耦合性
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2、高可用性和适用性
随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3、较低的生命周期成本
MVC使降低开发和维护用户接口的技术含量成为可能。
4、快速的部署
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5、可维护性
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6、有利于软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
六、MVC的缺点
1、MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
2、你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。
3、根据开发者经验,由于开发者将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。
4、MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
5、MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。
其实对于我个人来说,对于MVC并不是很熟练,甚至说不是很了解。因为我更多的是从网上了解到这些知识,目前并没有很好的应用到个人的作业和项目当,所以现在更多的是了解,为之后的使用打下基础。了解更多的知识,有利于提升我们的个人能力。
MVC概述