学习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 WebMVC框架

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概述的更多相关文章

  1. ASP.NET Core MVC 概述

    https://docs.microsoft.com/zh-cn/aspnet/core/mvc/overview?view=aspnetcore-2.2 ASP.NET Core MVC 概述 20 ...

  2. 【ASP.NET MVC】MVC概述

    描述 本篇文章主要概述ASP.NET MVC,具体包括如下内容: 1.MVC模式概述 2.WebForm概述 3.WebForm与MVC区别 4.ASP.NET MVC发展历程 5.运用程序结构 6. ...

  3. ASP.NET MVC概述及第一个MVC程序

    一.ASP.NET 概述        1. .NET Framework 与 ASP.NET                .NET Framework包含两个重要组件:.NET Framework ...

  4. ASP.NET MVC 概述

    目标:学习ASP.NET MVC 和ASP.NET WebForm的不同之处.学习在合适的地方使用ASP.NET MVC. MVC(Model-View-Controller)结构模式把一个对象分离成 ...

  5. ASP.NET MVC概述

    原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview 这篇文章帮助你了解关于ASP.NET ...

  6. 01 - spring mvc 概述及配置DispatcherServlet

    1.Spring mvc 基于model2实现,整体框架流程如(图片来自百度): ①web容器接收到http请求,若匹配DispatcherServlet的请求映射路径(web.xml),则容器会交给 ...

  7. Spring MVC概述

    Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速. Spring框架最初由Rod Johnson撰写,并于2003年6 ...

  8. Spring学习笔记(四)--MVC概述

    一. 飞机 最近马来西亚航空370号班机事故闹得沸沸扬扬,情节整的扑朔迷离,连我在钻研springMVC平和的心情都间接的受到了影响.正当我在想这个MVC的处理过程可以怎样得到更好的理解呢?灰机,灰机 ...

  9. 习题练习-第1章ASP.NET MVC概述

    一.选择题 1.ASP.NET MVC自2007年首次公布预览以来,作为(    )的替代品,普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的. A.ASP    B.ASP.NET ...

随机推荐

  1. vim字符查找和替换

    一.替换 1. r+<待替换的字母>    将光标处的字母替换为指定的字母 2.R       连续替换直到按下ESC 3.cc      整行替换,并进入插入模式 4.cw     替换 ...

  2. my.conf配置信息

    # mysql conf /etc/my.cnf# Created by http://www.wdlinux.cn# Last Updated 2010.06.01 [client]port = 3 ...

  3. curl get方式

    提交数据到https时,需要pem证书来加密.我们使用浏览器访问https的时候,浏览器会自动加载网站的安全证书进行加密.但是你用curl请求https时,没有通过浏览器,就只有自己手动增加一个安全证 ...

  4. nginx+lua+kafka 编写 在线日志上报系统

    案例一 rewrite_by_lua ' --引入openresty自带的json处理对象 local cjson = require("cjson") local produce ...

  5. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对   描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们 ...

  6. Git实际操作

    1.基本操作 git init 初始化仓库 git status 查看仓库状态 git add XXX.XX 向暂存区中添加文件XXX.XX git commit 保存仓库的历史记录 git log ...

  7. 基于stm32f427实现SVPWM控制永磁同步开环转动

    1.SVPWM原理简介 PWM(Pulse Width Modulation)脉宽调整,这是一种利用面积等效原理实现的控制技术.SVPWM(Space Vector PWM)空间矢量PWM控制,因为控 ...

  8. handle java

    关于java中的引用 我觉得在"think in java"这本书里面讲得很好 在那本书里 他们把引用叫做"句柄"(Handle) java中就是用" ...

  9. Unity3D-RayMarch-几何图元0

    效果图: 将下面的shader代码对应的Material拖给一个面片,即可看到效果. shader代码: // Upgrade NOTE: replaced '_Object2World' with ...

  10. Eclipse 使用 ButterKnife 细节问题

    原本这都是很常见的功能 加入以下jar库就可以了. 哪里知道左右都不能获得点击时间; http://repo1.maven.org/maven2/com/jakewharton/butterknife ...