00:03
现在呢,我们看一下我们今天讲的这个点。这样。今天的话呢,我们主要是讲了这个新增和。修改。嗯。安排我一盘。百度云。嗯。好,MVC案例。好了,我们今天的话主要讲的什么,主要是讲的这个,呃,修改,我们看一下这个修改里面我们这个哪些内容。8万。
01:04
上头昨天讲了哈,看。添加。在这。添加这个的话呢,相对而言要容易一些,这里边儿我们在添加这个逻辑里边怎么样,我们实际上并没有遇到特别大的挑战,如果大家要想的。不看。添加到位。哎。哎,如果说遇到挑战的话,有一个什么呀,就是对字段的复杂验证应该如何来做,这是我们这块遇到的挑战。添加这块我们看到一个叫。对。字段的复杂验证。好,什么叫对字段的复杂验证呢?我们说一下,它就是不止。
02:03
是,呃,验证码验证。需要通过。业务层。业务层来。完成一般。需要通过数据库服务器。这种验证就称之为。复杂验证什么叫简单验证呢?比方验证是不是空啊?那这个长度是不是够啊,如果要是一个这个A的话,是不是在一个时间内啊,那个叫简单验证,这个叫不带验证,我们看这不验证是怎么验证呢?看我首先的话呢,获取这个name,然后看到是不是大于零,然后that,然后通过转发返回,这就是我们所谓的这个验证,在这里边的话呢,没有没有遇到很大的挑战,应该说是吧,获取之后大于零,然后完了,把这个信息一放,直接对特,这就完了。这块的话呢,我们对这个复杂验证先做一个了解就可以了,后边我们讲stress的时候,我们会明确跟大家讲什么叫复杂验证,什么叫复杂验证,做下一个案例的时候,下一个案例就比较复杂了啊,比方说我买书,诶库存够不够,钱够不够。
03:16
我们可能需要来做一些综合性的这个东西,那个时候的话我会来说他。放下好了,然后做了什么呢?然后我们主要就是做了这个哦,这个需要。这个小为什么我首先我通过下载页面我来擦,然后提交页面到一个service,通过转发再回来,这个request是如何流动的。大家看我从这块儿开始的话呢,我一共是划分两个箭头,一个是加载。这是一个request,到这个页面给我返回之后的话,这个request是不是完了呀。啥意思啊?这个意思。
04:00
我来给他。六。过来看着啊。OK。大家看,大家看,我发一个请求过去,到这个页面给我响应回来,这个请求是不是结束了。这是一个请求。我再说一遍。我点这个刷新。这个请求发出去,然后这个页面给我加载完成这个请求就结束了,就是啊。这块下载页面,这个页面给我响应这个请求就结束了,这个上边一共是有两个请求。啊。啊,第一个请求。上图。一共。有。两个请求,第一个请求,加载页面的请求。
05:03
这个加载页面这个请求的话呢,就是当我加载这个页面,页面给我显示的时候,请求结束。说,嗯。发出请求到页面加。在。完成请求结束。快。结束。这就是第一个。那第一个我们画一下吧。哪一个第一个,哎,这个第一个。这个要第一个,第一个好了,第二个请求,看着第二请求,我提表单到设备,再转发回来,页面呈现完之后,整个这是一个请求我这了啊。
06:02
这个二。二看着什么说,嗯。点击提交。按钮到。到位。可是是不是发出了一个请求啊?发出了。一个。然后呢?转发到new。点GP。直到。页面加载完成。整个过程。整个过程一个。最快清楚吧。这是整个是一个请求,为什么呀,为什么呀,因为你这一块请求到哪了,大家看我整个这个过程啊,我这块我发请求到的是度。
07:08
Post。To post往这看,我是不是带了一个request,带了一个。就是它好了,我在这个里边,我又掉了一个什么方法。掉了一个request点。Get request dispat。然后写个pass.forward怎么样是把这个情书是传出来了,Request response,所以说这个request这是哪个里边的,这个是do post这个方法里边的。请求还有一个forward。到这个报上之后的话呢,这又是一个把这个请求又传出去了,所以说从这个出发,请求到这到转回来,一直到这个页面加载完成,这是一个主态。
08:02
所以说能看见一个什么呀,能看到能看到诶。我请求发到这儿,我再回去,我在这个页面。通过。通过request get,我这不还可以汇淆这个name吗?哎,这就是我们请求整个的这个。执行过程,包括我这块,我还能获取到我自个儿提交的。这个流程比较重要,这个的话呢,我们画一个,我们截个图吧。好了,说提交。表单do。设备。But。的do post方法。
09:03
然后呢,Do post。再转发。在转发回实际上无论是任何一个GSP啊,再转发回原GSP页面,原JSP页面,直到。该页面加载完成整个过程。只有。一个TP service request对象,这个挺重要的。后来。哎,整个这是一个请求,必须搞明白,这是一个肯定的,加载完之后啊,后边这个是一个整个是一个请求。好了,那下一个的话呢,我们说了一个关于表单的回显问题,目前这个回显啊,相对而言比较低级,也比较简单,后边的话呢,我们会有更好的实现,大家做一个了解就可以了,什么时候正好实现,我们讲EL的时候有更经典的实现。
10:22
这块做一个了解就可以,我写上做一个。了解这个大家需要知道。很重要,就是Mac的一个本质的一个东西啊,这块我们做一了解就可以了,好了。回选这个完成之后的话呢,我们再看那整个这个过程就写完了哈,这没什么了,下一个我们来看修改,那修改这个呢,需要说一下。修改的流程,这个流程一定是先显示页面,然后修改字段。
11:03
提交。表单。然后呢,修改。这个我要修改的话,我必须先写用要修改那个页面,然后的话呢,仍手工去修改某一个字段,取表单进行修改,这是整个的流程,那修改这个里边我们有几个需要说的。喊啊。看修改这个没什么讲的了是吧,ID的方法,刚才ID的方法ID。哎,这是我们的ID在这。怎么写的?这块我们只注意了一点难点。还行。She said。Oh four。
12:01
领带。过来看,哎,这个时候的话呢,我点一个update就删了啊,就不行,我点个update,哎,注意这个我这块的话呢,我随便写了个啊,这个时候他告诉我这个页面不存在,那这个过程的话呢,充分说明了整个。MVC这个流程。我把请求到。豆类,豆类,根据前面的这个情况,给我不同的结果。看这块我们用了一个什么呀,用了一个哎,在cash我们这里边用这个带cash用的还挺多的,在cash大家看到了这个异常有个什么作用啊,它实际上是不是相当于一个if else。只不过。有的时候比一要优雅,写一写多了,写闹腾的,你看我这块我写的哈,我说如果这个粗异常的话。我是不是top出呢?这个初一长的话,比方说这个值是ABC,我除一长的话,这个值是几啊,这个是不是every加一个T啊,我只有把这个过取掉,而且它不是空的时候才差了,它要是空的话,是不是也过了呀。
13:15
就是这块整个的这个。有。那其他的话呢,这块没有什么更多更多需要加的,OK好了,那这个之后的话呢,我们看这个页面,这个页面很有意思。修改的时候,修改的时候很多时候需要使用隐藏语。哎。ID一般都使用隐藏语,这个基本上是一个通用的解决方案。ID。一般都使用长语,一般都这么写。当然了,我们这块我们可以使用E来写了,在一般情况下,这个ID就是用这个隐藏语,这是一个通用的解决方案。
14:06
二。那。下一个干什么呀,下一个我就点这个按钮,我就提交吧。对。这儿呢,啊回来。六来,我们写个15。我得提交啊好了,我要是点提交的话,我们这个都是改成功了哈,还挺好改的。能改,那这个过程是个什么过程呢?看这个update的方法。如果要是一个正常的改的话,挺简单的,如果要是不考虑什么呀,要是不考虑这个验证的话,就挺简单的获取获取属性。封装drop,然后完了后边有一个什么,有一个笨direct吧,这个挺简单。这个挺简单。
15:00
好了,那。问题是我要验证呢,验证这个事有点麻烦,看修改中的。五杂。验证这个有点麻烦,麻烦在哪呢?麻烦在啊。弱。这个情况。若某一字段某一。字段。在数据。表中不允许。重复。的解决方案。这个麻烦在哪儿啊,麻烦你在哎,我修改的时候回来啊。回来我修改的时候,比方说给他。给它三,呃,这个8911吧,一好,那我在修改的时候,我说这个名字啊,不能够重复按这个,当然我们这就已经成功了哈,我们知道这个有点麻烦,常问在哪啊。
16:03
我不能去按这个名字去硬查数据表吧,因为数据表里边的确有一个跟我一样的一条记录吧,但是我这个要是改了的话,比方说我改成MVC了。他就不行吧,我什么时候去查,什么时候不去查,这块的话呢,也是一个通用的解决方案,我们看。这么写的一。二通常情况下就是在表单中。在表单中。当然有有有好几个解决方案啊,通常情况下的话呢,我们这种是比较主流的在表单中。使用隐藏域,使用隐藏域保存。这个该字段的最原始的值,那我怎么保存呢?我就是这么保存的,在这。
17:03
二。CTRLC过来。好了,然后呢。哎,然后我们的这个。方案是对上去。图哈,然后的话呢,我们是这个在。中。同时获取。原始值。原始。值和。新题。交的值,那两个值我都要获取一下,然后怎么样比对。比对。若一致。则通过。若。不一致就怎么了?则使用新纸。
18:04
新提交。提交的值去查询数据表,这就是通用的解决方案,过来到这个里边怎么做的,怎么做的,看这呢。CRC。但是我们这个代码太多了哈,挪一挪。行吧。这就是,哎,我们修改中不来验证说若某一次数方式不允许重复的话,如何来解决,这就是一种呃,我们比较通用的解决方解决方案。大家说这个排水怎么解决?还是什么图呢?我不用这个隐藏域,我直接用ID是不是可以传回来,我用这个ID查一下那个旧的,然后拿新的和旧的比,和这个差不多,但那个的话呢,会多一次数据库查询,所以说这种相对而言更加的轻量级。但是。
19:10
那是这样的啊,如果你原始字段特别多的话,就是说你需要写N多个隐input的话,需要写N多个这个隐藏域的话,可能那种方式开发起来更快一些。但是的话呢,我们推荐的使用的方式的话,是这样的方式,因为它可以暂缓去查数据库,这这个需要说一下。我们到后边我们去写项目的时候,我们都会遇到这样的问题,解决方案的话呢,都是这么解决。给他简做表解就可以了,这点需要知道。好了,哎,这是我们这边看到的,然后的话,那么还有一个什么呢?还有一个就是。若。在修改状态下。
20:02
RA。这个表单。若验证码是吧,若验证没有通过。表单的回显。问题怎么危险?好了,我们说,呃,通用的原则是这样的。工作原则是这样的,啥样的呀,说啊不允许。不允许。重复的字段。要。给予提示。但。段中。显示。这个旧的。旧的字段时允许。修改的允许。修改的则。改为新的字段的。
21:03
是。知道是什么意思吧?就是说我改,那我改失败了,比方说给他吧,来改成MVC,这个改成三五了。这改成啊一零了,注意看。我这两个是不是新的值啊。但这个是以前的,在我这块不给提示了,哎,这是通用的原则,基本上都这么干。同学说这种方案好像也不太好,最佳方案是什么呀?我把这个这我把这个值一填这块给提示刚考不能用,是不是AX我们很快就会学。这个方案是最好的,很快我们我们会讲。直接一返回看不能用,那多好是吧。暂时的话呢,我们还没有,我们还不能不能不能那么干哈,当然通过AX的话呢。这种好是吧,通过。
22:01
Ajax会。有更好的。用户。体验。现在的话呢,我们都讲到一个词是吧,叫用户体验。就是同样完成一个事儿,你让你用户感受是什么样的,他不一样,就是同样去吃饭是吧,吃饱了我们知道吃饱了你去那个去一个小饭店要碗面吃的,跟他嗷嗷饱。为什么很多人都去那个什么大酒店里边去喝咖啡呀,晚上喝完之后,他也他也没吃饱,完了回来之后可能还得去小店里边去吃碗去吃碗面。那轮用户体验好,服务员长得漂亮。让你心旷神怡,不,不就是这样吗?你要是去一个小店里边的话,那服务员可能是个男的,你要去一个大酒店的话,那服务员都是一色的苗条的,一个苗条高条。用户体验,大家以后去做一个东西是吧,小米吧,昨天还还是前天。
23:06
半年卖出了700多万部。盈利一百一百多个亿,然后完了,那局面总结的时候。比如说我们要保持创业的这个心态是吧,我们的这个目标是做出让用户尖叫的产品。那就是用户体验。行好吧,这个过来之后的话呢,我们这块需要说一下,大家很多同学都不太明白老这块什么啥意思。因为我这个时候啊,我这个时候是这样,大家看啊。我这个时候这个页面我是不是有有有两个这个显示层次啊,还上来的话,我得显示最原始的低轨单值吧。所以说来看一下我先来干什么呢,我先来会比这个卡,如果卡不会空的话,我是不是显示原始的值啊。这个指标就是如果卡通了为空呢。他们是空的吗?焊们说,没空的话,说明我不是从这来的吧?从哪来的?我可能是从这来的。
24:07
出错了,这个时候我也要显示好了,这个是什么来啊,这个值就是后边这我从请求参数里边来进行获取。好了,完事。这是我们的修改,再看一下有没有别的了。别的没有了哈,别的比较简单。完成好了,然后的话呢,我们又讲了一个叫response。点T。诶,我们发现这个方法有一个副作用。这个方法。这个方法的。副作用是什么呢?可以防止。表单的重复。提交大家先做一个了解,到后边我们还会详细的进行说明。
25:03
就是说我们明确说一下是吧,什么时候使用send,什么时候使用转发,那最直接的方式就是我如果页面上需要获取请求域里边属性的话,我用的一定是转发,如果不需要获取那个属性的话呢,我就可以使用。下在重庆下除此以外的话呢,还有这么一个。这个右边我们找一下我们前面讲的这个。JSP我们看看哪里边讲的。这知道吧。转发跟肯定像。啊,在这看区别。具体区别啊。有这么多,这些都非常非常重要,我们来看它斜杠。转发这个斜杠代表外部应用的目录,重学项呢,站点的登录,当时我们解释过,然后回到这个里边来,我不知道大家有没有注意啊,转发的时候我是不是都加了一个斜杠了。
26:12
而重降的时候,我说我们加起法加不了斜杠。一加的话怎么了,说跑到哪登录去了,那老师你这个时候他是不是一个相对路径啊,关于相对路径解对路径的话呢,这块我没讲,你要一定要加的话,你得怎么办呢?你得加上。context.get context再加,这个时候就肯定不会出现路径的问题。这个我们后边我们再说,但是这块的刚才讲的那个斜杠那个要知道,哎,我在写的时候发现一个什么呀。发现这样一件事,我们在写转发的时候增加解放啊,成绩成像的时候没加,为什么没加?因为要立加的话,我们跑外边去呗。
27:02
不能讲。不能好了。那就可以了,就完了哈,再来。Update,修改。好,我们又讲了一个叫面向接口编程。面向。接口。编程,我们希望我们讲完今天这个课之后呢,大家能够真的来理解什么叫面向结构编程,怎么理解啊,我们直接靠我们的代码看pass solid and。就是我这个卡通的DAO这个类型是不是一个接口啊,接口后边通过工厂的方式给我返回了一个实现类,这个实现类是怎么实现的,我完全不知道。那就意味着我如果要是返回这个时间内对象不一样的话,它有可能是访问的是my circle,也有可能访问的是Oracle,还有可能是直接访问的一个XL文件,这都可能会发生。而这块的话呢,我直接面向这个接口去写就可以了,至于说你是怎么实现的,我不关心,就像今天一样。
28:21
这PT我们后面已经都做到什么程度啊,我再把一顿写是吧?啊,我完全都是向接口去写的,然后的话呢,我们只需要修改那个配置文件就可以平滑的由Oracle过渡到。两个狗。只需要修改哪个修改。他就可以了。这这个一改就可以由MYSQL变成or。这就叫面向接口编程,这个话我不多,我希望大家的话呢,能很好的来理解这个意思。说在这中调用接口的方法,而不必关心其具体实现,这就是面向接口编程的核心。
29:06
如果要是战斗说这么一句话的话,你一定不会有什么感觉,但是我们已经写了这么多了,是吧。我希望大家能够。能够有一个切身的体会,知道他到底是神马意。好吧。这个完了之后的话呢,我们又做了一个什么呢,我们又做了一个这个可一致性的,这个可一致性的呢,我们实际上是为了更好的让大家体验这个,嗯,说可配置的这个效果,那怎么叫可配置呢。在这诶我直接来修改它,我就可以实现,我是基于my circle呢,还是。XML等他就可以。那这个呀,我们暂时先做一个了解就可以了,大家知道后,我这个程序原来可以灵活到。这种程度。
30:01
我直接这样啊,一切换就可以怎么实现的,我们跟大家告诉搞过啊,我有一个so啊。里边去读的这个什么呀,读的配置文件,读的属性值,把这个属性值放到了。Factor里边,然后呢,我在具体用的时候怎么用呢。具体用的时候,我从工厂里边获取的,它怎么获取呢?我根据这个type来找到我具体是哪一个。具体是哪一个实现由。在这我根据这个type具体来看我是哪一个实线,是TBC的还是XML的,这就可以了。那以上呢,就是我们今天讲的这个全部的内容,后边这个科学了解就可以了,那。关于我们代码标识的部分,大家需要好好看一下,那总总的来讲的话呢,大家需要把我们这个案例。非常流畅的写出来,这是我们最低的一个要求。
我来说两句