00:00
下面呢,我们来实现这个功能哈,要查看图书信息,就是说我们对这个图书信息可以来进行翻页操作,我们看一看整个这个时序图,这个流程是怎么样的,浏览器,我首先我需要呃,把这个请求发给JSP。好了,发给这个GP之后呢,这个JP呢,就index JP哈,它实际上它调用的是呃,Book service的get box方法get box getb之后的话呢,到了这个solve,这个solve呀,我需要获取请求参数markc price mean price跟page number,然后呢,我需要把这三个组装为creativeb,同学说老师我要是没传这三个参数怎么办呢?没传三个参数配置number的关值是一。Max的默认值是那最大值这个默认值是零,反正你要有个有这么一个对象,然后呢,我来调这个get配置方法,当然把这个可book传进来啊,Book service,等book service再来调book dau的这个方法,然后我在book service里边把我得到的这个配置放到请求域里边,我再做一个forward去这个book JP页面是不是就可以显示了。
01:14
这就是整个的流程。所以说这个流程呢,应该说很清楚,我们已经写过很多遍了,那于是呢,过来写一下吧。这么看我首先呢,我有一个index JSP。这个页面。这么写我直接啊,我发了一个这里的同名项,去的是response.send。去什么呢?去的是?加。
02:01
嗯。Guidebo。点度。去的是这么一个地儿,或者说我去的是哪呀,我我们这么说吧,我去的是这个book so,它的什么方法呀,Get book方法我们也可以这样写。Book问号method等于get。OK,好了。CTRLC新建一个。嗯。八。不卡下一步。
03:02
Ghost都接收扩装器不要了。写完。Do干什么呀?要用do。OK,拿过来这个方法用,方法需要怎么念?首先我们已经说这个步骤了啊,我需要获取三个请求参数配置number tr等于request点位置,Number string me price s tr等于request.get2。Me price再来price IR等于request.getter。
04:03
Mark price搞定,然后呢,Inch被number等于一,In等于零。等于in a.map value,然后的话呢,我要对其一个一个进行赋值,怎么赋呢?配置number等于。点percent page number s tr,注意我这块是不可能出异常啊,我出异常的话,我要真出异常的话,我就取一。甩开。嗯。上去,然后下一个需要再写一个,不能写一起。你知道为啥不能写一起吧?你要写一起的话,大家想,我要写一起的话,我要第一个除一长,后边我是不是就无法赋值了呀?所以说我分着写in等于。
05:13
In engage.mark me price at JA。再来,Max等于点。Max price OK,这三个都搞定了,创建一个criteria book。等于new book in ma OK搞定,然后的话呢,中间我需要一个service创建一个包,这个service呢,我没有像DAO那样我去写成一个。接口实际上要是正儿八经开发的话,这些都应该是开始不好的,大家直接照着写就行,然后一拼就可以,刚才我们把DAO写完之后,就直就说是老师你写这玩意干啥的,我都不知道,正常正常开发的时候都是先把这些do,先把这些接口都定义好,然后的话呢,我们再一个一个去实现,当然我们在定义的时候有可能出现一些这个偏差,偏差不大,比方说5%以内,大部分的方法都没问题,然后只校好说后的话一拼,你不可能说像我们去写一个登录一样,是吧,我先写一个页面,再写一个service,再写一个service,再一个这设。
06:30
太低了,但我目前这个service呢,我是这样写的,我没有定义接口啊book啊。Service直接写个方法啊。Public page。Book。Get fish传一个什么进来啊,传一个book进来。然后Bo等于6BO。
07:09
然后直接看book ko.get page看写完了。这完事之后的话呢,到。到这个里边我写个什么呀,我写一个。Service。等有OK完了之后的话呢,把这个得到一个配。哦,K等于。service.get一传,然后怎么样?
08:03
Control o导进来request.tribute。队长。配置,然后呢,做一个页面的转发,Get request,因为我这个页面不能够单独使用,给它放到Weber下。Pages下边的点P点写完。这么一个C过来。FA。新建一个JSP。灯第二第二。
09:01
好了,然后呢,我这个页面长啥样啊。看号。我这个页面最开始的时候的话呢,长成这样,比方说我们要是当然我们回头我们也可以带这个查询条件啊,长成这个样子,长成这个样子就price,这应该是个什么呀,这应该是个表单吧,然后底下是分页的,然后这样一个效果,那我们来写吧。From action action应该是去的这个。问号method等于get method?Price。嗯。SIZE1就size让它这个格小一点,Mean price,这mean price我们在那个什么里边,在我们这个呃,So里边是不是可以获取啊。
10:15
再来。一。Name must price OK。然后有一个按钮也。Type sum米sum米是吧?好这完事之后的话呢,底下是显示的点点底下显显示什么东西啊。嗯,被告,然后是显示出的信息。People。
11:01
有多少个TR取决于什么,取决于取决于多少行吧,所以说先需要从导入GSTL。嗯。扣一百一没问题好了。C。For each。怎么写?过来看我的里边,我是不是放了一个book配置啊?Book page.list吧,那是不是意味着去调那调那个get粒子的方法呀,我们是不是有那个方法呀?看队太慢了,看队友。大家看我是不是有个get list方法呀,这不是获取这个list吗?过来好了,点list,然后一个一个的输过拍。
12:06
错了啊。然后呢,T。二。T。过来。长成这样。书名作者,呃,加入购物车。书名。哎,去去哪得看啊,不点开吧。H里边有个title。是吧?这里面有title,还有price。
13:00
然后是加了一个压。布克加奥应该是。嗯。Also。然后呢,是下一个TD里边。放的是。Book的price。啊,还有一个或者加入加入购物车一超链接。写完好了,这个table呢。十大一点行了,这个完事之后的话呢,我们再看啊。这就写完了,然后是共多少页,当前第几页,首页,上一页,下一页,末一页,得到多少页来过来。这两个边共多少页,共多少页?
14:12
Book page.photo page number这个的话呢,老师来看它看什么,是不是看方法呀。That total。Guy talk to his number,嘿。第一个字母小写C过来。第一个字母小写共多少页?空格。当前第几页?Book page点配置number吧,是吧,当前第几页,然后是首页,首页那个是不是有点特殊啊。
15:05
什么时候有也不一定。于是有。If,如果有首页的话,怎么样分有首页配置点has?看is吗?Is不用写has brave啊,没有配置啊,Has brave如果有。好,来have brave next,如果有的话呢,是brave配置next page。过来。如果有上一页的话,我们就写上。Eight。F。首页。
16:10
上一页。好了,那下一页一样过来。下一页,莫言。下一页。墨印好了,这里边的话呢,我们要写一个基本的一个链接,链接是book survey,问号method等于get books,这我还没写啊,然后and。
17:00
Number等于首页是一吧。CTRLC。啊,整个的。CTRLCCTRLV,这应该是上一页吧,怎么写啊?Book配置点上移配置。下一页。不配点next page。莫言。我也应该是想。Book page.how number行,这样的话呢,这个基本上就起来了,嗯。啊,是。
18:05
然后呢,这个有点问题,这个不应该写在这个里边,这是一个读的方法,你这么写。Control。X。Guide。request.get method,然后呢,Method method等于get plus.get method。Methodtp service request.plustp response.plus。
19:03
然后method.e。Face。Request。刘一昌。T。保存好看效果。先跑一下啊。有问题我们再调,有问题以上就有问题,而且貌似是个什么呀。你说什么?没这个方法吧,That request response。Get。啥问题啊,知道吧,以前是不是搞过这是不是搞过这个问题啊,这个是不是protected呀,所以说这块应该写成。
20:09
把这改成就可以是吧,或者是get get declared method。我们有方,我们实际上我们在那个。我们里边是不是有对应的那个。方法呀,还记得吧?Two。这一下对吧。大家看,这就是第一页,就我们自个儿写的哈,我们写下一页,第一页没有那个下一页正常吧,下一页下一页四。挺好的,首页里挺正常的吧,好了,我来写。
21:04
50。六十点一下是不是五页的第一页啊,基本上已经分好了,有什么问题啊,我点下一页的时候,我这个条件是不是丢了呀,我怎么样让这个条件给加上就可以了吧,那条件一加的话,我前面这个分页这个是不是就完美了呀,怎么加这个条件呢。And。来,我在点这个下一页的时候啊,我肯定要是点这个下一页的时候,我要带这个p number还需要带什么呀,还需要带这个me price跟mark price版,但我现在我是不是只带了一个配置number这两个字怎么带呢?这两个值我需要通过隐藏域的方式给它带过去,就是说我现在我点下一页的时候啊,我这个超链接是这样,当然我我这个不是点度哈,我这是book so问号method一样的好吧,然后的话呢,我这边我有两个隐藏域,我现在我希望这两个隐藏域直接放在这个后边,我通过GS是不是可以呀。
22:08
我通过DS就可以完成这个操作,先来写这两个隐藏域,回到我们这个里边来。不来隐藏玉吗,放?这个。隐藏信息的。'name。Mean value,注意看这个value哈,点mean。后来。Mark。保存好了过来看它,注意哈,我写个50到。
23:00
60我点一下右键原文件。这个值是不是带着呢?好了,只要我下一次这个值我还能往后带的话,这个值就还能够获取到,那于是的话,我下一次我点这个超链接的话,我怎么样保证。他依然会带过来呢,那于是的话呢,我们看一下啊,我们现在呢,我们就为所有的超链接都加上这样的一个事件。那我首先我需要导入query。对。Query。网百度PPT。嗯。C。对,一样的。
24:00
过来。嗯。嗯,后面这个数你不用管没事。绑进来。现在呢,我们写一些代码。Function。干什么呀?我为这个页面的所有套链接都加上一个支架。方式我怎么办呢?然后我说呀,我想来获取这个,呃,隐藏率的这个值,我可以怎么获取啊。
25:09
隐藏域的这个值隐藏于hidden点点可以怎么样再讲啊。AX的时候,我们会知道,在我们这个里边,我们有一个方法可以用,叫。这它是干什么呢?它是可以把这个表单进行序列化的,它说C,你看除了我的隐藏域都序列化一下,抗令值是什么啊。啊,这个Y等于金额了的一个。Me see。然后。
26:03
转过来,来,50。到六十点一下,好,注意我点下一页,大家看price是50 price是60吧,好末页一样OK,我要是有这个值的话,我怎么样,我把这个放到。哇,当前有一个F属性等于k.F。家。和life是谁呀?是不是长成这样了,加什么呀?我为了把这个给它拼上的话,加什么呀?加上这个,再加上这个value,然后的话呢,我让当前的值都变为它不就可以了吗?叫window.location.cra等于CRA不就可以了吗?这个还是for再过来看。
27:00
50到六十点一下不有点下一页,大家看这条件是不是就带上了。首页下一页,OK。然后我写个60到。74页注意它这个范围就可以了啊。首页墨页这样的话呢,整个这个发现这个功能就死白了。好,那翻页这块的话呢,有有两个点哈,首先的话呢,大家需要知道整个这个流程,这个流程其实挺简单的,那要说这个流程的话呢,流程这块又有两个点,第一个我们先需要在这个book so里边来获取这个markc CRA win跟page number,而且对他们进行必要的检查,封装成一个create book对象,后边的话呢,就一个一个去焦方法,然后把这个把这个配置对象放request里边来,这个页面页面上正常显示就可以了,咋显示呢?
28:05
这么显示的,你看就是正常的吗?List,然后一个一个显示啊,这个做完之后的话呢,下一个,那我要是带查询条件的怎么办?那查询条件呢,我们这块我们有这样的一个表单,那这个查询条件我如何啊,我再点下一次的时候这个值还能带回来呢,我们使用的是隐藏域,它这个图。平常然后的话呢,我这块我写一个GS就可以,这样整个这个就OK了。行吧,下去大家把这块写完。我们再来看一下啊,给大家一点机会,什么机会呢?我们可能注意到了,我们这个进行分页的时候。是不是还有一个转到多少页啊,是不是有个这个,这个我没写,这个留给大家来写,怎么写呢,我把这个呃。
29:09
我把这个文本框加上啊。大家可以考虑使用键S怎么把它写出来,1NAME page number转到多少页?过来看一下,服务器开了。嗯。哎,读到多少页就有个这个,把这个的话呢,给它实现了。
30:01
下一页诶有这个把这个实现了,那这个实现的话呢,我们看一下啊。之前我们这块我们需要怎么样,我们有一个GS的有一个JS验证,比方说输的页码不合法,比方说你输的是个什么呀,你输的是一个AAA,你输的是个负一,你输的是一个很大很大的一个数不合法,需要告他输的这码不合法,如果要是合法的话,就可以直接过去,我实际上这块的话呢,已经把这个基本上都写完了,你可以参照一下把这个写完,那把这个要是写完的话,那整个这个流程应该是比较顺的。那大家把前面的看一下,然后把这个写完,有问题的话呢,问一问同学问的比较多的说老师啊,就是为什么会有这个service啊,你直接在这个,呃,Service里边叫这个do是不是可以呀,我中间为什么加个service呢。
31:00
好,我们来看我们最初的这个图,这个图我这个service呢,这块是整个是model,其中我有一个service,然后叫DAO,然后叫的买色Le,那为什么加了一个service,而没有这个service,直接去掉DAO就说明这个service,这个service要干一些什么活呢?干一些so不能干的,DA不能干的活。那这里边儿的话呢,有一个相对和绝对的问题,比方说我们这样说,你service是不是个类啊,我完全可以没有DA,我我直接由这个service去访问数据库,可以吧,可以吧,那你为什么会有这个DAO呢?大家想过吗?为什么会有这个DAO,而没有直接由这个直接去访问这个数据库。如果你要进公司的话,你会看见有一些人的确还根据这么写,由直接去访问DA,由直接去访问麦口,这个里边的话呢,主要是跟这个分层跟接偶有关系,大家看啊看,说我这个service是一个控制器吧,控制器的这个呃,职能跟功能就是接收请求,调用方法,根据方法的执行情况转发或者是同形项页面吧,它就是控制器,它是一个中转站,这里边的这个功能要尽可能的单一。
32:25
那你如果把这个弄得要是特别复杂的话,比方说我从这个里边直接去访问数据库了,那你访问数据库你有可能用的是呃,GDPC啊,你直接访问了,那我如果想把GDBC这个技术改为哈的话,你会发现整个这个service是不是都需要重写啊,维护成本极高,那你现在你把这个DA代码要是分出来的话,如果要是再重写的话,你是不是只只需要重写这部分呢?这个手很明显,怎么样你是不就清楚了呀,就是为了清洗,你说你一个公司里面,你说一个人,这个人很强是吧,他可以干很多活,那么我们为什么还要这个分工的是吧?说哎,这个是做前台的,这个是做后台的,这个是做DB的,为什么要这么干呢?那术业有专攻。
33:12
好了,那现在呢,这个dau是访问数据库的,这个是说控制器的,还有一部分代码需要放在这个里边,说什么代码放在这个里边呢?那现在对我们而言这个就很郁闷是吧,那就直接调用了,这个很很明显没有任何的这个意义,这个在后边有意义在这儿。在我进行结账操作的时候,有你大家看我结账操作的话,我也是这个字有点小啊,因为这个图本身太太大了,浏览器还是调用我调用这个方法,然后的话呢,我们会获取这个购物车对象,然后有三个校验,比方说第一个校验什么呢?第一个是校验这个。
34:08
呃,数量的。然后是溜信息的,这个是余额的啊,这是三个校验好了,校验之后的话呢,如果校验要是过的话,OK,我需要操作了,我们看这个时候这个操作是个什么情况,这个时候呢,我们需要去通过这样的几个步骤,12345,需要发送五个数据库操作。就是说这个时候不是一个DAO可以搞定的,我需要五个,而且这五个构成一个事物,要么都完成,要么都不完成,哪五个呢?第一个我要去修改。库存的数量跟销售的数量,第二个我需要去修改余额。第三个我需要往这个退,就是这个交易里边插入一条记录。第四个我需要往。
35:05
这个推item里边插入若干套记录,第五个我需要使三身失效,诶有这么一些步骤,那你要是有这么一些步骤的话,那这些步骤写在哪呢?呃,当然说这些步骤啊,我可以写在service里边,那如果要这些步骤要写在service里边的话,这个时候service里边要是负责事物了,那这个service它就不是简,不是一个简单的控制器了,它里边除了我们想的接收请求调用方法,根据方法情况,根据方法的这个执行情况想用页面以外,它还有这样的代码,很明显这个也不适合放在DAO里面,这个叫业务操作,它就放在service里边。就是真正的业务操作在service里面,目前目前我们这个方法呃,看不到,只有我们在写这个cash方法的时候,我们看到,哦,这个时候这一系列操作都需要带。
36:04
里面整个的话呢,就构成了一个事物操作,也叫一个业务,在我们后天讲到这个方法的时候,大家会看到这个方法,具体这个执行,到时候的话呢,会有更加深刻的了解,暂时的话呢,先做一个了解吧。然后呢?我们把这个来写一下。这个这就不写这个ID吧。因为。这个值我需要往后转ID过来看在这。说,如果这个值发生改变的话,P。方式方程改变什么了?首先我获取一个Y6值等于这点Y6,好了,那我这个Y6值是不是合法的我都不知道,所以说首先我需要校验。
37:03
Y6值是否为数字?就是是不是什么呀,是不是一呀二啊,而不是什么A呀A呀啊,什么B呀,而不是这样第二个。还需要校验什么呀?就按Y6在一个合法的范围内,具体是哪个范围内啊,一到。Total number,好,这两个都过的话OK。这个时候什么样?页面跳转,页面跳转那写吧。是不是在这个范围内写一个正则B。都是由什么呀,都是由数字组成的反斜杠,你这个开始以这个接触。
38:01
中间是一个或者是N个。一个或者是多个B就可以好了,然后if if什么呢。Ig.TXT。呃,Value。我们可以先把Y6去一下前后空格。Three。好了,如果要是不合法,那我就。嗯,输入的不是合法的页码,保存看一下。
39:02
A,合板合板的话,这个值应该就没了吧。不合法box。播。这么写点Y流变为什么空的?再过来去查一下。看A不可怕,来12这就OK了,来A12不可怕,来看12啊一。A25个半。EA符合法,行了好了,那这个OK的话呢,下一个下一个是什么呢?下一个在合法范围内,那本身我这个夹伙是一个什么,是一个字符串,我需要转一下wall page number等于p in,大家看这P页应该是谁的呀?
40:07
这应该是GS的方法。VL说,如果。V小于一或者是V大于最大的个数,最大那个数怎么写啊?我们知道我们有一个压页码,这么写呗。See。后来这实是可以解析的哈,然后这个债plus in一个,如果比这个还大的话,那它就不合法啊plus。分写一遍。CTRLC,后来这看这两个可以合一起一会儿啊,K number写错了。快看。
41:07
11页。零不合吧?12、不怕右键原文件犯个。大家看,这只是转过来了11吗?OK,我写一个合法的,写个三合法好了,我写个50~60点,它注意这个是五页哈,七不合法,写个四是合法的好了,这样的话呢,这个合法之后的话,我可以怎么了,我们可以跳了。怎么跳啊,关等于等于什么呢?等于好长的这个。Think。下一页行吧,CTRLC过来。
42:05
看着啊,这number是几啊,是不是我们这块这个number。加配置number还是再加吧,因为挑完之后的话,你得你得保证什么呀,你得保证我是这个可以带这个,呃,谈知条件的这样写。C过来。好,window.location.cra等于完事。再回来再刷。哦,我点下一页就可以好了,注意哈,第二页这是第五个,我转到第四页,大家看整个图没丢啊,第一。没问题,第五页第五页只有一条了,点它完现没有了,来我转到第六页,来我转第12页合法行了,这样的话呢,这个就写了,就是我们这个怎么样,这个带进判断这个,那这两个是不是可以写到一起啊,怎么写到一起啊。
43:18
啊。过一个flag等于false。提到一起,如果这个合法的话。Flag等于负。后来如果这个说法的话。CTRLX什么的,它大于等于一,而且。小于等于,它把Y等于负。
44:02
那衣服吧。有一个问题,有一个问题,我底下这个是不只能在上边是处的这个情况下来判断啊,所以说呢,写个L吧。Page number等于零,我只有在这个基础上我才可以这样。好了再来if,如果flag没形的话。这就可以了吧。能看懂吗?你看这个图就可以了吗?这个时代码的话呢,比以前更加的紧凑,再看一遍。A。不合吧?
45:01
三哦,有串吧,啥串?说语法错误是吧。我传的这个你看。说出了一个负三呢。这个负三咋出的,我点开它这个是没问题的啊,再看一遍,再看一遍,来我选个啊A这是可以的,来我这样选,我选个12。你看这个时候的话呢,我们这个校验出问题了。竟然出问题了,然后的话呢,他确实他确实是把这个十二传过来了,扣扣完之后的话,我们发现。它什么,它有一个负三和三。这负三和三是咋来的?咱不是说了吗?咱咱说我这个page number,你不是可以进行自己的这个免疫吗?怎么出问题了呢?这出怎么排呀。
46:01
贝迪欧音。这一行你看mean price mark出问题了吧,这一行有一个错误,你可以在这一行打上一个断点,然后看一下这个CB传的这个直的是什么就可以了,诶,我第8UG。再找到它就来好了,我选这是正常的哈。我看谁呢?我来看CP。0.0大的一,这是正常的吧,可以过没问题过吧。好了,现在呢,呃,我来写一个。12好了,看这个。
47:02
是不是零啊。怎么能是个,怎么能是个零呢?我这配置单不应该传过去,那我没传吗?回到这个里边来。哦。哪儿呢?我们看啊,这块我也结束了呀,配number这块我也有值啊,说输入的不是合法的页码page number我们看一下哈,我这块有一个page number是零哦。坏了出问题,我这块是怎么写的呀,我刚才这块有点乱是吧,这是不是合法呀,所以说这块不应该写else吧。是合法呀,我合法的情况下走吧,这块看了啊没有他。
48:00
放屁。是合法的。那他要是合法的话,那我这个校验,我如何来进行校验呢。他是这样的,就是说我这个是合法的,我往后来进行校验,我要是不合法的呢,我不合法,我是不是就不能校验了,就是不合法你的话,你这块你就问题了,所以说这块我们加上一个判断。或者说你把这个这样子也好。嗯。嗯。这样可以吧,这样子好像还不对,把这个去掉吧。这样吧。是吗?
49:02
嗯。这样写对吧。对不对。能看懂吗?我这个合法的情况下,我再进来是不是只有这个都OK的话,他才合法呀,这个就可以了。放了这个回吧。这个代码的话呢,总是需要一步一步的调哈。这没毛病,好了,下一页来,我写个13符合法,你好啊,11合法,OK,没问题。写个负一。嗯,买50。到60写完,写完之后的话呢,我写个4OK,我写个2OK就行了,那整个这个我们就写完了,列一个七行,这就是我们的什么呀,这就是我们的box这块,我们通过这个,呃,通过这个什么呢?通过这样的这个文本框的方式,可以跳到各个页面的这个情况,大家在页面上凡是看到的是吧,在这块我通过一个页面,我这样一写过去用的一定是JS。
50:16
能想明白吧,你否则的话,他自己触发不了这个东西,一定是减S,还有什么呢,下一个我们来说一下啊,大家回去写,明天上课的话呢,我们要讲这个。他叫查看书的详细信息,比方说我点这个spring,我可以照这个页显示书名,作者、单价,出版时间,评论,然后我点这个继续购物的话,还可以再回来,再回来的话怎么样,再回来的话呢,依然保存着这个,嗯,查询条件能懂我的意思吧,这个并不难实现。整个过程由这个点过来,我需要传个ID吧,上数据库里边,把这个书获取着放到请求域里边,页面上一显示就可以了,好了再回来我还能够带着那个条件说明什么,说明这个页面里边是不是也有一些隐藏域啊,这个自己回去实现,明天上课我们讲。
51:22
好吧,大家看一下。
我来说两句