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概述的更多相关文章
- ASP.NET Core MVC 概述
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/overview?view=aspnetcore-2.2 ASP.NET Core MVC 概述 20 ...
- 【ASP.NET MVC】MVC概述
描述 本篇文章主要概述ASP.NET MVC,具体包括如下内容: 1.MVC模式概述 2.WebForm概述 3.WebForm与MVC区别 4.ASP.NET MVC发展历程 5.运用程序结构 6. ...
- ASP.NET MVC概述及第一个MVC程序
一.ASP.NET 概述 1. .NET Framework 与 ASP.NET .NET Framework包含两个重要组件:.NET Framework ...
- ASP.NET MVC 概述
目标:学习ASP.NET MVC 和ASP.NET WebForm的不同之处.学习在合适的地方使用ASP.NET MVC. MVC(Model-View-Controller)结构模式把一个对象分离成 ...
- ASP.NET MVC概述
原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview 这篇文章帮助你了解关于ASP.NET ...
- 01 - spring mvc 概述及配置DispatcherServlet
1.Spring mvc 基于model2实现,整体框架流程如(图片来自百度): ①web容器接收到http请求,若匹配DispatcherServlet的请求映射路径(web.xml),则容器会交给 ...
- Spring MVC概述
Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速. Spring框架最初由Rod Johnson撰写,并于2003年6 ...
- Spring学习笔记(四)--MVC概述
一. 飞机 最近马来西亚航空370号班机事故闹得沸沸扬扬,情节整的扑朔迷离,连我在钻研springMVC平和的心情都间接的受到了影响.正当我在想这个MVC的处理过程可以怎样得到更好的理解呢?灰机,灰机 ...
- 习题练习-第1章ASP.NET MVC概述
一.选择题 1.ASP.NET MVC自2007年首次公布预览以来,作为( )的替代品,普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的. A.ASP B.ASP.NET ...
随机推荐
- Java Web解决跨域请求
要知道跨域请求就要先了解同源策略,那么什么是同源?什么是不同源?简单来说就是,如果两个资源,包括HTML页面.JavaScript脚本.css样式,对应的协议.域名和端口完全相同,那么这两个资源就是同 ...
- python note 10 函数变量
1.命名空间 #内置命名空间 —— python解释器 # 就是python解释器一启动就可以使用的名字存储在内置命名空间中 # 内置的名字在启动解释器的时候被加载进内存里#全局命名空间 —— 我们写 ...
- Quartz.Net 定时服务
http://www.cnblogs.com/jys509/p/4628926.html https://www.cnblogs.com/AmyLo/p/8125505.html https://bl ...
- maven学习--1.安装与配置
转自 http://www.cnblogs.com/xdp-gacl/p/3498271.html 1.下载地址:http://maven.apache.org/download.cgi 2.解压缩包 ...
- linux下编译protobuf(可以编译成pb.go)
编译前需要安装gtest $ cd googletest $ cmake -DBUILD_SHARED_LIBS=ON . $ make $ sudo cp -a include/gtest /hom ...
- makefile入门-初步了解
自己开始学习makefile是由于VScode配置工程文件,看别人的配置不是很懂,于是决定入门学习下makefile. 先来说说makefile是做什么用的:makefile可以实现工程的自动化编译, ...
- java webservice生成客户端代码并调用
wsimport简介 在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用web ...
- js调用后台方法
一种方法是使用ajax调用$.ajax({type: "POST",//传输方式url: "",//action路径data: "",//传 ...
- [转]windows中断与共享的连接(samba)
问题:window下当成功登录到samba服务器上的共享的目录的时候,若要是再系想登录此服务器上另外一个共享目录时,会弹出登录窗口. 但是不管输入的用户名和密码对错都会提示. “不允许一个用户使用一个 ...
- 浅谈nodejs和php
现在,Web开发公司和开发人员可以选择多种技术栈来构建Web应用程序.早期网络发展,不同的技术被用于前端和后端开发.但是,随着Node.js的发布,布局发生了变化,因为它允许开发人员使用 JavaSc ...