学习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. day50 盒子显隐2D形变

    复习 1.浮动布局 解决block盒子同行显示 => 不完全脱离文档流 => 不再撑开父级高度 脱离文档流: 不在页面中占位(显示层次高于文档流) 不完全: 可以通过清浮动操作, 让子级重 ...

  2. mybatis实现自定义typeHandler

    java8以前的日期处理有多恶心,相信不少人都深有体会.与mabatis集成查询数据库中的日期字段映射为java日期类型或者字符型的时候,会多出一个".0".当然可以自行处理.但是 ...

  3. Nancy.Net之旅-初次见面

    Welcome Nancy   首先,欢迎来到Nancy!我们的主要灵感是Ruby的Sinatra框架,因此Nancy以Frank Sinatra的女儿名字命名.许多人想知道NancyFx中的Fx是什 ...

  4. Linux-03

    目录处理命令 目录处理命令:ls 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能描述:现实目录文件 语法:ls 选项[-ald] [文件或目录] -a ...

  5. pythond的icmp广播报获取局域网主机IP

    icmp广播报获取局域网四川特产IP from scapy.all import *import randomimport threading def scan(sip,dip): pkt = Eth ...

  6. 19-03【golang】strings包

    golang的strings包提供了字符串操作的一系列函数.下面做个简单介绍 函数 用法 备注 Compare(a,b sring) 比较两个字符串   Contains(s, substr stri ...

  7. CRM--自定义stark

    一:启动 解释django的启动 完成以上两步,在app01下创建stark.py文件,就会被加载 (admin.py就是这样启动的) 二:注册 三:设计urls 四:增删改查

  8. docker-compose使用

    1.创建app.py项目文件,执行以下代码 import time import redis from flask import Flask app = Flask(__name__) cache = ...

  9. python中的继承和多态

    继承 继承的表现方式: class Animal(): pass class Cat(Animal): #animal是cat的父类,也可以说是基类 pass print(Cat.__bases__) ...

  10. [精华][推荐] CAS SSO单点登录环境搭建及实例

    1.因为是本地模拟sso环境,而sso的环境测试需要域名,所以需要虚拟几个域名出来,步骤如下: 2.进入目录C:\Windows\System32\drivers\etc 3.修改hosts文件 12 ...