00:00
我们首先呢,还是来看一下我们在上节课讲的这个,嗯,MVC设计模式的整个处理过程,然后呢,今天我们要写一个相对完整一点的MVC的案例,那里边可能会包含数据库连接值,包含dbu q,包含j query,也包含sub JSP,会把前面的所有知识相对而言做一个小结。看一下啊,客户端发一个请求到服务器,服务器把这个请求给。So little。获取请请求信息,更根据请求信息的情况去去调。Model在我们这块的话呢,就是一个普通的Java类,然后这个Java类有可能需要去掉数据库,把这个返回结果给到so,然后so根据返回结果转向一个JSP,那JSP的话呢,就是用来呈现。
01:04
数据的这个呈现数据的方式,我们目前只能使用账号代码,我们到后边的话呢,我们会讲这个EL跟GSQL,到时候我们再把这个给它改过来,那这个时候这个JSP就是显示成,然后GSP再生成一个HTML页面,先给客户端,整个就是M。Po go数据库,这是M是c controller,而JSP充当的是view视图。那我们来说,我们先来看一下我们目前要写的这个案例。不能称之为是一个项目啊,因为里边没有业务,里边过于简单,但作为一个案例的话,还是很不错的。又见run soul。
02:13
哎,我们首先呢,有这样的一个表单,然后我点这个sum进行查询,这个时候我们可以查询到数据库里面有哪些卡。啊,我目前里边只有一个小镜,我还可以来添一些人,这个查询呢,是支持模糊查询的啊,我来添一个人,添一个新的他嘛,比方说小强。大连。送。成功啊,这个时候只有两个人,那知识模糊查询。
03:04
我们再再加两个人哈。1567799002。好了,我们来看一下这个模糊查询什么意思呢?当比方说我在这个里边,我输入一个X。小吧。小的话,是不是只有这个小静跟小强这个时候输的结果就是他们俩那任何一个我们都可以进行这样的操作,比方说我这块我写个小,然后我这块的话呢,我写个三三是不是只有一个是符,呃,是不是只有第一个符合呀。
04:10
看只有第一个结果。他们之间是。病的关系。说错了啊,他们之间是交集的关系,不是病的关系,我既要满足这个条件,又要满足这个条件,就像我买一本书一样,我要买Java的书,同时它是电子工业出版社的,这就是交集。好了,刚才我们看见了什么呀?我们可以创建一个新的customer。CTRLC过来,看来小静我点一下会给我一个提示,告诉说这个用户名已经被占用了,重新选择。我们在添加信息的时候,会有这样的一个提示,再回来我来进行一个修改操作,比方说呢,我去改ma。
05:05
啊麦,我先改个MA5就是可以改成功的,好了我再来改它看我把它改成小静。小静是不是已经被占用了呀,同时这个值需要改为麦克五,因为本身我这个名字是不是就是麦克五啊,然后呢,如果我这块上海我改了一个上海。需要注意的是,这个MAC5这个名可以用吧,是不是我自个儿的名啊。点一下,哎,这个是可以成功的。那为什么说这个呢?因为一会儿在修改的时候啊,你给它改为小径小径三数据库里边有一个记录的名叫叫小静三吧。对吧,这个不能改,那数据库里边是不是也有一个叫MAC5啊,当前的是MAC5吧,呃,这块我们需要有一个区分度。
06:01
好了,这个我们再说改成功,然后呢,删除很正常啊,就直接删除就可以了。这就是整个一圈的天山改茶。那我们把这个项目呢,我们简单的说一下我们要做的这个项目啊。首先我们要说明我们这个里边啊。没有MVC案例吧,是吧?案例这里边的话呢,我们有一些实际的情况,就是没有业务,没有业务层什么直接由。我们的调用Bo。所以也没有事物操作,就是比较简单的层面,事物的话呢,我们在做下一个案例的时候会体现出事物,所以说我们这个里边,我们可以在DAO里边直接获取connection,所以。
07:11
可以在DAO中。直接获取。对象了,这是我们需要的一个。好了,没有业务层没有事物,我在DAO里边可以直接获取connection,这对于有事物的是不允许的。好了,这是第一个,第二个呢,那肯定就是采取MVC设计模式。这是肯定的哈,这是肯定的,好了,那我们我们再看我们使用到的技术有哪些。我们需要来给它分别一下,那第一个呢,要是说的话就是MVC设计模式了,是吧,设计。
08:05
模式,这里面我们需要用到什么呀,GXP。这是必须的,好了,然后呢,我们肯定需要去访问数据,访问数据库,我们看数据库,从数据库使用。使用my circle,好,那我需要去连接数据库,连接数据库需要使用用连接池吧,我们选用C3P0数据库连接池,数据库连接池,然后呢,呃,GPC工具。采用我们用前是DB9好了我们看。还有什么呢?还有啊,我们刚才这个我们没有用,还在我们这块要用,我在进行删除的时候呢,我要进行这个提示说确定要删除什么什么信息吗?啊页面上的提示操作使用JA query。
09:12
页面上的提示操作使用。就carry啊,这就是我们所谓的叫什么呀,叫技术选型,我们这个太简单了啊,比方说我们后边要做一个复杂一点项目的话,比方说我需要报表,我需要这个,呃,图形的显示啊,可能是接幅率差,可能POI等等等,我目前没有。从这块儿看的话呢,还是比较简单的,我们在。总结一下啊,Mac设计模式啊,JSP survey后边的话呢,PU9和普通的照va类。啊,数据库还是狗。连接数据库呢,需要使用C3P0数据源,这个也好是吧,JDBC采用DB,页面上提示采用j query好了,那这就可以了,然后说,呃,记住难点。
10:10
看还有哪些。我们这个需求过于容易,我们就不写这个需求分析了,这个过于容易,直接看演示就可以,就是一个天利用MVC设计模式对一张数据表进行添删改查,所以说需求那个过程就不写了,直接照着他写就可以好了,我们看这个技术难点有哪些。记住难点呢,我们前边讲的时候呢,我们提过这样的几个。啊,对块有这块有比方说我们希望。是一个模块用一个soul,多个请求用一个so,这样怎么搞?以前我们没干过这个事儿。那第一个记住难点我们提到了是吧,多个请求。
11:01
如何?使用一个座位啊,这是一个,这是一个啊,我们再看还有什么,还有我们想啊,我把这些值。啊,这是什么呀?这是模糊查询的问题,那我如何来做这个模糊查询?那模糊查询这块的话呢,我们前面我们写搜的时候是不是写完,但是在页面上并没有完成过类似于模糊查询这样的操作,所以说模糊查询在我们这个里边暂时看也算是一个难点。模糊。他。好,再来好,这是查询创建,创建这块的话呢,有一个应该是个难点,我在进行创建跟修改的时候,我如何来验证这个用户名是不是已经被占用了,而且给出提示,这是一个难点。说在。
12:08
创建或修改的情况下按验证。用户名是否已经被使用并?给出。的士。那目前这个里边的话呢,也算是一个比较让我们为难的地方,也算是一个难点。好了,再看还有哪块是。删除这个应该很easy吧啊,直接删就可以了啊,这是修改添加查询基本没有了,就这么多。好了,那难点的话呢,有这样的三个,如何多个请求,如何对应一个JSP,如何完成模糊查询。
13:00
那如何在?这个。如何在创新跟修改的情况下验证名这个已经被使用,而且给出对应的。提示信息,哎,这是我们看到的比较难的地方,其实卢教授说的话,可能还有一个是吧,就实现Mac设计模式,确实是用Mac设计模式实现天山改查完整的一次,这也是第一个,虽然说我们前面做过一些,呃,做过两个例子是吧,一个是查询,一个是。删除,那基本上跟这个有点类似好了,这样的话呢,我们总的这个要求呢,说的也就这么多,下边来看吧,我们也来说一下这个种的。这个架构的话呢,也是过于的简单架构的话,我们实际上就是什么呀,就是MVC第一稿画一个图。
14:01
这个呢啊,可以作为这个显示层。叫六。没呢啊,使用GP来进行承担,这是干什么的?显示的,显示的,那么我们需要了解什么呢?我们需要了解,了解的是这个JSP它究竟干什么了。View嘛,是吧,这是一个显示状,JP究竟干什么了?这里这里边有人喜欢,也写了。那他要干什么呀?横线。数据必须的干的事儿啊。好了,还干什么了?接受用户的输入吧,在这边输入还有呢。
15:00
要说的话,JP吗?可能还有什么呀,是吗?要说还有一个什么,编写DS代码,给出对应的提示,JSJSP干的事儿就这么几个谬,而需要注意的是,在这个里边绝对没有。任何的业务操作,任何的跟数据库相关的操作,它就是一个显示成,就是显显示信息的,哎,我腾讯数据,我查询给我一个结果。我这个录入。失败了是吧,告诉我用户名,用户名已经被占用了,成功了,告诉我成功,然后呢,接收用户的输入。这个就是啊,一个一个页面嘛,是吧,给我一个表单,让我写东西啊,写JS代码啊,JSP干的事就就这么多好了,GP完事之后的话呢,我会把这个请求发给谁呀,发给so。
16:07
第二层这是一个我们看。Ctrler是一个solvel,哎,我们想想这个ctrler,这个solvel都干什么,它跟GP之间是如何进行交互的,第一个。干什么呀?我首先需要先。获取。请求信息实际上获取什么呀,获取请求参数吧,必必须的,我不管是查询还是删除还是修改,我都需要获取请求参数,然后呢,第二个啊,看这看这我在创建一个新的卡的情况下,我来写一下啊。
17:04
Address。北京凤。13456789900,好了,写完之后,诶通到数据库里边呢,这个很好,我们觉得好了,那我再来写一个,我再来一个创建,大家看哈,这个时候的话呢,我先写了一个小钱小静是不是给我一个提示啊,所以说你把这个信息这个获取完这个信息之后的话呢,我干的第一件事儿实际上是。验证。验证请求参数的合法性,有可能需要验证,有可能哎,如果要是需要验证的话,你就验证是吧,然后呢,如果验证通不过验证。失败。然后呢,呃,需要。
18:03
给用户。返回吧,是吧,需要返回页面并给出提示信息,这是我们看到的。好了,给出提示信息,然后验证,如果验证成功了呢?带过来看。比方说小四来。地址。凤13255778800,好了,这个时候N个sum传输成功了,大家说这个步骤我应该是干什么了。
19:01
我要干什么了,我刚才是不是有这三个字段啊,然后我应该调一个方法给他保存吧,那这个时候你看name address phone,我应该我应该怎么样把name address phone封装成为一个渣B是吧来说。把请求参数有可能是这样哈,请求参数封装为一个Java b。好了完事,然后的话呢,目前我调用的是DAO的方法。然后什么响应页面,哎,我这个so干的事的话呢,就是这些事。所以说第一个哈,获取请求参数啊验证。
20:01
验证失败的话呢,直接返回页面了哈,给提出信息,如果验证要是成功的话,有可能需要把请求参数封装成一个Java bin,然后呢,调用DAO方法进行响应,这是我的这个里边,然后再来下一层的话呢,我这个叫DAO。下一层我这个Gao有。嗯。哎,这一层我叫AO。看小磊和那个高天龙都是从龙那边过来的,他们都知道,我也猜到。但是我们应该发现,发现应该扣分,扣分哈。要不的话,我跟小磊可以坐一趟车,本来我今天比你早了一点。这块的话呢,实际上叫model,我们这个model里边没有业务啊,我这块直接就是一个dau,我直接是一个DAUDAU办的分简单了吧。
21:06
干什么事啊,获取数据库。链接,然后呢。执行crud操作吧。这就完了,然后有可能需要返回结果,什么时候返回结果呀。待会什么时候反馈结果,我在进行查询的时候,我是不是需要反馈一个结果呀。我这样一查,你得给我结果吧,哎,这个时候需要返回结果,那既然这个需要返回结果的话,我们这个里边这个里边因JA bin调用do方法,那下一步的话呢,应该是什么?调用do方法的话,可能是获取返回的结果,然后呢有可能。
22:03
我这个返回结果需要一般进行响应吧,那就是把返回的结果放入到什么里啊,Request中,然后再响应页面,响应页面有几种方式来着。一个是短发,还有一个是重定向,哎两种方式,那你如果你把返回结果放到请求域里边了,这个时候你一定要使用转发,用用重镜像在页面上是无法获取那些信息的。而这个呈现数据怎么呈现啊,就从。Request。中获取。放入的属性,然后通过Java代码来进行呈现。
23:08
那我们这里边儿这个东西的话,也就这么多,这是一个。目前这是一个JSP。目前这是一个。目前这是一个DAO,好了,那我DAO需要访问数据库,我这个数据库的话呢,就是一个my circle。My circle OK,访问的方式就是,哎,我可能要把这个请求给到我的serve,然后serve去调用DAO。DAO去查询数据库。当然我这个数据库的话呢,需要把结果再给到我的。
24:08
然后呢,我第有第有结果需要给到我的。有结果,可能需要给到我的JSP。就是整个的流程,我们这块的话呢,有非常需要注意的地方,就是我不能够跨层访问,就是我不能够由JP去访问DAO,也不能够由sol去访问my circle,这是我们需要注意的地方。来。注意不能画层。访问什么意思啊?就是说我们不能由GSP去访问DAO,或者是GP去访问MYS狗,这都不行,就得是一层一层的访问。
25:04
好了,关于分层,需要注意的说,只能自上。向下不能。自下。自下向上。你来啥意思啦?这个意思是说呀,是说,哎,我搜我这个DAO。需要被so late所依赖,就是说我so late里边可能得有DAO的这个,嗯,对象,我得依赖它,但是DAO不能依赖于survey,懂这个意思吧,为什么呀?我为了让这个DAO还可以得到。
26:00
重用。我可以说我可以说依赖于DAOJSP,依赖于,然后呢。我不能反过来我DAO里边有色的API,这样就不好了,就是我们分层需要注意的两点,在我们这个里边呢,体现的并不是很强,因为我们这个太简单了啊,随着后边讲项目的深入的话啊,这是我们分层需要注意的最基本的两个原则,第一个不能跨层。第二个不能自下向上依赖,OK,这是我们讲到的什么呀,讲到的这个基本的就有架构吧,虽然说简单是吧。
我来说两句