00:00
我们来学习MVC设计模式。我们先来看一个组件开发的思想。我们来做一个类比,小的时候呢,我们都玩过积木。我们知道,哎,积木有很多种形状,有圆形的,方形的,三角形的,矩形的等等等。我们把这些积木呢给它,呃,组合起来可以变成各种形状,比方说城堡啊,汽车呀,坦克呀,诶,那么我们在张化一开发里面有一个类似的思想。这障碍一开发里边呢,也会有很多的组件。我们把这些组件经过配置组装以后,就会成为一个项目。当然我们在有除了这些组件以外呢,还有一些业务逻辑是需要我们自己写的。那我们来看一下招IE开发里边常见的组件。
01:01
我们看到第一个啊BU,比方说啊,我这个项目里边需要去处理扎阿B。我们就不需要再重新去写处理赵化病的类和方法了,病优就已经给我们提供好了。哎,第二个DBCP,我们讲GDP的时候呢,已经讲过了,哎,比方说我需要一个数据连接值,我直接拿过来就可以用,经过配置一下是吧,我们会有一个配置文件。再比方说,呃,我想用JDBC来进行这个,呃,超出数据表我们直接去写。基于JDBC的API很麻烦,这个时候我们可以用DBCP。第四个啊叫。Fill upload,比方说我们在这个web项目里边,我们需要来进行文件的上传下载,那么我们直接调用这个主件的类和方法就可以了,非常的方便。那想进行日志的话,我们可以用这个commonlo。
02:00
以面向对象的方式超出数据表。我们可以用hamlet。我们想做一个OA。呃,工作流的这个流程,我们可以来用这个DVPM等等等等这些的话呢,就是障碍里边常见的组件。那有了这些主件以后,我们开发效率应该说是大大的提升,开发速度的话呢,也会大大的变快。好,以上的话呢,就是我们讲的这个web里边的组件的开发思想。下面我们来看一下招的开发流程。开发流程呢,我们目前能想到的,就目前我们学完了这个JSP之后呢,我们有这样的几种方案,第一种方案我们用看一下哈说。客户端浏览器发一个请求到服务器,服务器呢,呃,直接来调一个,我们可以在里边去访问数据库,然后在里边利用response的get。
03:06
Write方法,直接出来那个out,然后after print,我们当然可以,呃,有一个视图出来,但是这种写法我们在前面写过哈,我们知道非常的麻烦,麻烦在哪儿啊?第一个我用so来进行显示的话很麻烦,我需要一个一个输出,因为so是一个类,它并不擅长做显示。第二个我们如果在里边直接去访问数据表的话,那么这个时候我在sub里边访问。和操作数据表那些代码就不能够重用,我只能在里边比方说。我要是我这个项目不是基于这个,嗯。BS的,我是基于CS的,那这个时候的话呢,访问数据表的这些信息就得重新的再写一遍,所以说这种方式呢可行,但是有明显的缺点。
04:01
两个缺点,第一个不擅长显示,第二个在里边写的访问数据库的代码不能够得到很好的重用。OK。我们再看一个,大家注意哈,这两个图不一样哈。第二个的话呢,我把这个so替换成了JSP。我们知道JSP呢,在页面上我我是可以写Java代码的,那我当然也是发一个请求到服务器,服务器去调用JSP,我GSP当然可以访问数据库,GSP当然可以进行显示,没问题,我们看这个问题在哪。这个问题在于JP做显示是很好的,但JSP去访问数据库的话,是不是意味着你要在JSP页面里边去写大量的Java代码去访问数据库啊,页面上写Java代码大家是不是觉得很奇怪?其一。
05:00
页面上写Java代码很奇怪,其二,我在页面上写的访问数据库的代码也不能够得到很好的重用,同学说,哎,你可以定义一个一个的类,然后我在JSP面里边去引用啊,啊,这个从一定意义上可以缓解。所以说呢,这种模式在以前得得到过非常广泛的使用。但是后来我们发现,在JSP页面去写Java代码确实是一件非常让人不爽的事,我们要是开发一个项目的话,我们可能会有成百上千个JSP页面。我们维护JSP。和维护Java类,我们指的是这个业务代码哈,很明显维护Java类会更好一些,所以说这种方式呢,比第一种会好一些。但是其缺点是我要在JSP页面里边去写大量的Java代码,包括逻辑代码,包括访问数据库的代码,哎,这个。也不好,因为它不便于维护和升级。好,我们再看一种。
06:03
诶,我把这个跟GSP分开。我把逻辑部分访问数据库的部分,我们可以放在里边。然后呢,显示部分交给JSP,这就是所谓的这个主件,看一下发请求到服务器,服务器来调,作为一个控制器,我接收请求,根据请求的情况去调用Java类,由Java类帮我完成业务逻辑跟访问数据库的操作。然后他根据呃,这个pogo。的返回结果来转向一个JSPJSP来进行显示,JSP显示的话呢,我们可以使用一些标准标签库或者其他的标签,比方抓two啊,这个4MVC里边啊,都会提供这样的标签,然后呢给用户一个响应。这种方式是我目前。
07:04
使用的主要的方式,这个实际上就是MVC处理的过程。再看一遍。客户端发一个请求到服务器,服务器。直接来调一个so,这个so呢,是作为一个控制器而言的,它接收请求。根据请求的情况决定去调用什么类的什么方法,那么我们后边这个pogo里边我会包含处理逻辑。业务逻辑以及去访问数据库。好了,那我根据这个,呃,访问数据库处理的这个结果返回到这个里边,根据这个返回结果转向不同的。GSP页面怎么转向啊,目前我们学到的有两种方式。一种方式是转发,一种方式是重定向,整个这个就是我们所谓的MVC。
08:05
设计模式m model指的是po之后的。看一下这部分就model。这部分叫model。八而controller就是我们所谓的C。控制器,而JSP周围显示的话呢,叫view视图MVC设计模式。好了,我们来看一下具体的定义,Mvcg model view cons模型视图控制器。
09:08
Mac是一种设计模式,它把应用程序分为三个核心模块,模型、视图控制器,他们各自处理自己的任务,YYY。M model叫模型,模型的话呢,我们在这个图里边,我们指的是sub调用的这个pogo,普通的Java类以及访问数据库,这个都叫model,看一下。Model表示业务数据和业务逻辑。什么叫业务数据跟业务逻辑呢?比方说访问数据库的部分是model。那除了访问数据库部分以外,还会有其他一些逻辑部分,比方说哎,我在这个京东上买了一件商品。那我要是点完提交之后,我已经付完款了,这个时候我们不只是从数据库里边插入一条记录这么简单,这个时候可能是需要操作若干条记录,比方说在你的这个订单里边会多一个订单。
10:14
在在那个商品信息里面会少一个商品,在物流里面还会多一个这个物流的信息,如果有积分的话,可能还会增加积分,整个这些都是我们所谓的。业务逻辑,每一个业务都会去操作单独的数据库的数据表,整个放在一起算。一个业务创作。那么我们这个model部分的话呢,指的就是这个业务模型。一个模型可以为多个视图提供数据。什么叫多个视图啊,我们现在的话呢,我们可以通过网页去在京东上买东西,那京东本身是不是还有这个安卓iPhone以及pad客户端呢,我在这些客户端上也可以操作,他们对应的这个模型是一致的,所以说这个时候这个模型可以得到重用。
11:09
而显示成不一样,可能是pad,可能是安卓,可能是iOS,还可能是网页版。由于应用于模型的代码只需写一次,可以被多个视图重用,所以说提高了代码的可重用性,哎,这个词我们会经常提,叫可重用性,如果你写完一次代码的话,这次代码可以被反复的重用,那么那么这个代码就非常的有意义,如果你同样一个操作,你发现这个代码写了N多次,那这个时候我们的这个项目一定是有问题。模型。视图,视图呢,就是我们看到的页面。比较直观的就是我们看到的这个网页。呃,我们用这个手机的客户端,我们看到的那个安卓的那个页面,这就叫视图,视图是用户看到的并已知交互的界面。
12:07
试图向用户显示相关的数据,接受用户的输入,但是试图不进行任何实际的业务操作。他把这个请求发过去,用model来进行实际的业务处理。控制器。控制器接受用户的输入并调用模型和试图完成用户的需求。它就是接收接收输入,而且调用模型,根据模型的返回值给你视图。控制器接收请求,并决定调用哪个视图组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据,这就是控制器。好了,我们翻过来,我们再来看一下这个图。
13:09
流程呢是这样的,客户端发一个请求到服务器,服务器把这个请求给到一个。接收请求根据请求的相关逻辑来调用。Model层就pogo,那这里边的话呢,会有逻辑,逻辑有可能去访问数据库,然后给so访问一个结果。Sol根据这个返回结果转向一个JSP页面,那这个转向有两种方式,一个是转发,一个是重定向,我们前边重点讲述的,然后GSP页面来显示数据,显示数据的话呢,一方面是写照号代码啊,更多的时候可能是用GSTL跟ell,或者是我们。其他的外部标签标签的话呢,我们现在还没学,我们目前直接使用Java代码来进行呈现。
我来说两句