00:00
我们这个数据库啊,我已经给大家建好了,叫book DB,那么其中它对应的呢,有五张表,第一张表叫user用户表。用户表有ID。及资的列,第二个是用户名,密码,邮箱以及角色啊,以及他的角色。那行。那我们回到这个图当中,稍等一下啊。我们回到这。啊,那个ID的这个导出架包,咱们有同学找了一个资料是吧,叫ID里面咱们去导出架包比较方便的操作啊,一个插件,我就把它放到这个网址,把它放到这边啊。他自己课下自己去去试一下。好,这个用户呢,咱们缺一个角色是吧,同学们。哎,是不是少了一个角色啊?点一下编辑,我们把这个角色把它拿进来。所以呢,我们可以往下走一点点啊。好,然后呢,我们在这边再画一个。
01:00
叫角色。好,差不多。那行,就这样吧,啊叫角色行再来。所以呢,我们这是我们的用户用户表,然后呢,我们还有一个叫book表,Book表里面有图书的封面。图书的书名。单降。作者是谁?销量以及它的这个叫库存。哎,这是一本图书。再往下我们会有一个叫卡item。比如说用户啊,一号用户,你看这都是一号用户。他某一本图书,这是五号这本图书,哎,他购物车里面有一本。一号这本图书,他的车子里面有两本,二号这本图书,他的购物车里面有13本,就这样。
02:00
然后呢,我们还会有个订单,订单指的是这是订单编号。然后呢,某一个用户。在某一个时间花多少钱是吧,某一个用户在哪一个时间花多少钱,就这样子。然后呢,我们还有一个叫old item old item它指的是某一个订单到底它的详情,到底买的哪些东西,比如说你看old病,大家都是四号的,是不是属于同一个订单啊。你看这一个订单里面是不是有五个订单详情啊是吧,同学们,哎,就是这样。啊,再来。这是我们的一个数据库啊,我把它导出,导出成表啊。导住。好,我把它放到桌面上去啊,这个叫不可DB。OK。然后呢,咱们下面开始来看这个皮肤肌类。
03:02
我们一起来看一看。第一个我们有com.at硅谷点。book.p点,我们第一个是叫user。User里面有哪些信息呢?第一个ID自造列。第二个是我们的UN name用户名,第三个是我们的password,再往下一个是角色。弱啊,是他的角色好,Public use。好,就这样子,这第一个user,第二个是我们的book。Book里面有哪些信息呢?第一个ID。然后咱们有封面。封面我们称之为叫稍等一下啊,我们和数据库把它对应起来。我们叫布,可以卖。所以book image行吗?同学们,再往下一个是书的书名,Book name。再往下一个是price。咱们用的是double类型。再往下一个是作者。好,再往下我们有销量和库存。
04:04
销量count。库存。好库存,我们叫不可抗。大小写也不要错,因为我们的best里面的规则是不是就已经约定好了?啊,就是这样的,当然这本书我们最好有一个状态吧。还记得不?这本书是否正常嘛,是吧,带个状态啊,叫book。啊叫book status,那这个地方呢,这个地方我就没有提供status,咱们最好把这一列把它加进去。要不我现在就讲。改变表,我再加一个叫book status行吗?同学们啊,类型好,保存一下。保存。我们可以给它一个默认值,在那边默认值零。行,就这样子。好了,把它关掉,所以呢,我们回到这边来,我们一个叫book status啊,默认给它设置一个零。
05:01
好了,这是book表。Public book。OK。也就是我们图书啊,1234567,总共有八个属性,123456788个对的。好,这是图书。再来,我们应该有all的all的病。病第一个。Intake ID知识。啊,第二个订单,我们有订单的编号日期金额。订单的编号。回到order,我们一个叫order number。好。子俊。The number。再往下一个叫订单的日期,叫old date。好,我们用的是呃,加法点有跳年月日十分秒。再往下一个,我们有个叫old的user,是不是谁订购的呀,我们写的是user,叫old user。好,再往下,我们有订单的金额。订单的金额我们用double类型。
06:01
Old money。好,再往下一个是intake类型状态。Status。没问题吧?123456总共有六个123456对的。然后这一个订单会包含多个订单详情。会包含多个订单详情,咱们应该有一个all item item list。啊,应该有个这么一个属性,所以因此我需要写个all item。好,我们新建一个all item。然后呢,All item里面有in ID制造列。再来我的艾特,里面有哪些信息呢?哪一本书买了多少?属于哪个订单?所以我们需要一个book。买的数量是多少?叫by count in。By count,大小写都不要错啊,By count,再往下是old病。你属于哪一份订单?是吧,属于哪个订单。
07:01
好构造方法。Item。所以我们O的病当中,我们这边就是一对多。一多,然后呢,在我们O的item里欧的item当中,这边就是多对一是不是这样的。啊多对一好,这边一个叫book,这个是不是也是多对一啊。多对一,那么反过来一堆多,其实可以不用不用写。啊,Family在book里面到底要不要一个一个old item list其实可以不用。啊,这是根据我们的业务来的。再往下,我们还应该有一个叫cut item。购物车项啊,Card item表示的是购物车项。那这个购物车项里面有哪些内内容呢?咱们来看一下。购物车项里面我们看一下,这是我们的购物车项。ID制造链,哪一本书有多少数量,属于哪个用户?Private intake ID。
08:01
然后哪一本书book?然后呢,买了多少数量intake by count。好,然后属于哪个用户user user是吧,就这样子。Public cut item,其实啊,其实我们这个信息cut item,我们在这个里面还需要应该有个cut这么一个P接类。我把它注释先写在这。啊,但是我现在假装假装假装我现在不知道啊,我们应该。我们应该还需要设计一个cut类。代表购物车,代表购物车这个。啊,这个,呃,这个叫尸体吧。啊叫cut这么一个类,但我现在我感觉我目前我还考虑不到,我还用不到,等到我们后面随着我们功能深入,我感觉我们最后一个cut这样比较方便,到时候咱们再加行吗?同学们。啊,暂时先这样好。所以呢,我们有12345,这是和我们数据库里面是对应的,我们把他们的get set,咱们把它补进去。
09:06
怎么带一个ID的。然后再来get set。Get set全部加进去,OK。这是我们的book,搞定。Card item也是一样的。我们写一个带有ID,没问题,再来一个get set。再往下,O的病也是一样的。我的兵。Public。我的病。ID。好z.ID等于ID可以吧,然后get set。OK,帮我看着啊,防止我生成错了,再回到这边来,咱们再来一个construct,带有ID的,然后再来get set。好,再往下。Construct ID。然后回到这边来,Get set。OK,搞定。
10:01
就这样的。12345,这样我就把它写好了。再来。那下面呢,我把架包把它拿进来。选中他。然后呢,找到我们的project。找到二三级删掉了啊,我们只需二四。找到model。找到24PRO到二四这个,然后呢,Dependency点击加号library。一个两个三个都是要的,然后咱们Tom盖也是要的。是吧?啊,这样咱们就把它全部加进来了啊,点击应用点击OK,好。架包加进来之后,架包我们已经把它加进来,加进来我们可以从上面把两个配置文件把它拷一下,是不是就这两个。没错吧,根据C拷过来,放到我们的src下面去。放到这儿给UV。粘过来,然后呢,这边有个叫web.X文件。这个web.X文件直接拷贝吧。You。拷贝过来,把它放到我们这里面去。
11:02
好,就这样子,OK,没问题。只不过呢,大家是大家呢,需要稍微注意一点点啊,需要注意一下。就是我们的,我们这边有个叫pages,这边有个叫index啊,那么他们都是放在外b in粉里面的,那么这个前缀呢,请大家要这么去写。挂本应粉细杠。我们的前缀就变成这样了,就不再是单纯的一个斜杠了。假设没有index,假设我们所有的页面全部是放在pages这个当中的,假设啊,全部放在pages里面,那你这边还要再写一个pages,这样比较方便。是吧,这样是不是我们所有的页面都会加个前缀叫配机子啊,就比较方便了,因为这个index放在外面了啊,所以这个有点讨厌,实在不行你可以把index也挪到里面去也行的。能听懂我意思不?啊,比如说我现在就把它揉进去。那如果说我现在把它挪进去了,挪进去之后,那我这边就加个配底子了。
12:00
行不行,表示我们所有的页面啊,全部在配几次这个下面。好了。后缀还是点HTML没问题,这里面全是点HTL没错。那下面咱们再继续。P类以及咱们的配置文件,我现在已经把它全部加好了,那么这个里面的内容呢,这个就不管它了啊,这个其实呢,我们,呃,其实这个内容呢,我们可以专门把它新建个文件叫某某某点DTD后缀名叫点ddd,然后在这边可以引入。啊,在这个属于XL的一些扩展知识啊,咱们就不再给大家带带来一些新的负担了,我就这么去写了啊,所以这个之前也边写边边给大家介绍过的是吧,看一看就可以了啊,这个对大家没有要求,那行,这个里面的病应该都不需要吧。咱们是不是就只保了一个配角?配件还是要要的。是不是同学们啊,配件还是要要的。好,再来。好了,默认情况下。默认情况下来我们看一下啊。
13:02
二三这关掉。把这个关掉,好回到这边来。我刚才是不是删错了。CTRLC帮我看着啊,那我重新把它覆盖进去,果然是吧,选中它CTRLC覆盖一下啊,行,现在应该没问题了是吧?关掉啊,那么二三我也不要了,只看二四啊,帮我看着啊,反正我改错了。那这里面这些玩意儿都不删。可以吧,全部删掉了啊呃,这个不管他这个房子行再来。在这个里面。不管他。B法pages,好,Pages里面个叫user user下面有个叫lock.h没是不是。好了,那么我们默认情况下,大家帮我想一想,默认情况下我应我应该反问PROJECT24,然后呢,Page点度op等于page page应该等于啥?应该等于什么?是不是?配置是不是得user-log?
14:02
你想嘛,前缀是啥?前缀是不是斜杠,外部音符斜杠配句子。那不正好拼接上这个叫user,然后杠log后缀是点叫点H对面吗?这样不就能访问到这个登录页面了吗?没错吧,同学们。好,咱们把这边部署进来点它。好,二四把他们删掉,可以应用一下。好,OK。那行吧,这个是登录页面,所以呢,我们就从登录页面开始。呃,这是引用那个样式表。我们写一下TH冒号。艾特大括号,把这玩意儿全部删掉,然后把它挪到里面去啊,挪到里面去。然后导包导一下啊。3W点。叫time。稍等啊。Time点哇,可以吧,就这样子,那行这个改过来了。嗯,这个src,这个咱们也把它改一下吧,从这到这CTRLC。
15:03
找费。好,然后回到这边来。帮我看着啊,防止我改错了,这个应该也改过来了,这个超链接我没改是吧,没改就不管他了,行,先放着吧。好,我们先把登录页面先搞定啊,这是欢迎登录,然后呢,请输用户名,这边有用户密码,然后立即登录,行差不多,咱们先看一下这个登录页面能不能显示出来行不行,同学们。先试试啊,看它能不能显示出来,然后我们再来你这边请输入用户名,诶这边是不是有个form表单啊。那form表单默认是action,是提交给这玩意儿的,咱们最好不要提交给他。啊,我们不要提交给他,我们要提交给谁呢?我们提交给user点读。所以这边我得写一个TH冒号action。然后艾特大括号,我这边写个叫杠优点读行吗,同学们。啊,提交给他,然后method等于post。行。Input type等于稍等啊。
16:01
呀,配件都有问题啊。哪里问题哦?Pag点度。Page点度operate等于page page等于user-loging,对的呀。少S,不会吧,应该没少吧。看一下啊,会到这边来配置吧。对应的是他吧。啊,电脑上应该是应该是没有问题的,我看一下是不是有problem存在啊。还真是看到没有,是不是library有问题是吧?那行,把它停掉。停止掉。停止掉之后,点它点击structure,要么你就点这边的把它艾特进去。要么你就把这个RDX把这玩意删掉,重新新建一个是吧,同学们两个方式都可以行,点击加号,点击应用。行,这样应该就可以了。再回到这边来啊,现在应该是没有问题的,再启动。好,我们再继续啊,我再继续改,我这边改我这边的内容。
17:03
所以我这边肯定需要一个隐藏预备input。Type等于K的。Name等于operate。OPAT。Value等于login啊,将来我让这边就等于login行吗?同学们啊,将来我想去写一个login方法嘛。你行。嗯,这是个硬input,哎呀,这边搞得乱七八糟的,咱们把它改一下。好,哎,登录页面是不是有了啊,这个图片显示的也是正常的,那说明咱们地址应该没问题啊。好,再继续。把这个改一下啊。Type index。ID,我们想要的是不是就是代码?Name是我们想要的啊,我们把这个name把它改一下,你这个name不要叫user name。我们数据库里面。数据库里面是不是叫U呀。
18:01
所以咱们把这个name把它改掉,但是我建议大家这个ID千万不要改,因为这个ID人家估计有些样式比较属性,用的是ID样式是吧,因为名字一改就不对了,能听懂我意思吗?行,把这改掉啊,叫UN name。OK,这是第一个。第二个是我们的密码。立马。密码这个名字也把它改掉,叫PWD是吧。看一下数据库,对了吧,叫PWD啊行萨点击登录。那行吧,咱们下面是不是要写一个user controller哟。回到这边来,打开打开打开打开P好到这一层。行,我们写一个叫controllers。或者的controllerable.user controller行不行?同学们叫user controller,然后在这里面我们得写个方法,String,方法名叫什么?哎,你咋知道叫lock呢?哎,我们这边写的叫oper是不是啊oper loging啊,所以这边对应的叫log,那行参数需要需要啥参数方法的参数需要什么。
19:09
是不是一个叫UN,一个叫PWD是吧?行,写一下吧,子俊。UN。好,PWD。就这样的吧。行,下来我们要跳到index页面上去。啊,先反正先写一个让他不报错嘛,好回到这边来,那请问一下我这边是不是要去根据用户名和密码要去查询哦。所以我是不是需要DADA上头是不是要有service啊,然后他不是要去定用service啊,来一步一步来啊,一步一步来,再来新建一个接口。好,我们写个叫user do。好,那么它里面学个方法,Public。也就是us get us子俊。菌PWD可以吧,我写了一个方法叫get use了啊,根据u name和PWD去获取,那行,那这玩意呢,咱们最好把它放到DA这个包里面去,我刚才忘见包了,你看。
20:01
直接放到这个book里面去了是吧,那怎么办呢?直接在这边写点DA,然后报错了啊out回车它有个木,看到没有。那个叫木。啊,就是把当前这个接口把它移到这里面去点一下它啊,他问你放在哪个模块里面,当然是24这个模块了,点击OK。是不是就有了呀,啊,就移到这边来了。那行再来,咱们还需要再去安po,基于当前的DA这个包,再建个m po这个包,然后下面一个类叫user DA po可以吧。好让他继承best do。好,然后需要use了。好,然后实现user do可以吧,然后实现它里面的方法,好,那这个方法咱们怎么写。Load selection from t us well。叫like一个值啊,And password like一个值。好,Name password行吗?同学们,这样我们就把它写好了。那行,咱们再来新建service。好,新建接口。
21:00
好点,User。Service。好,我们写个方法。呃,Use啊,这个叫lock方法。Log方法,或者你就叫get user方法也行,随便你叫什么啊。好,我就叫rock嘛,好,子俊。You。几卷password?OK,那么我得新建实现类,按p.user service按P。然后让他实现user service是吧,重写它里面里面的方法。好,重写一下啊。快捷键不管用,好。然后咱们是不是得需要DA的知识啊,所以这边写一下private user DA user DA,好,那回到这边来,User DA get user password可以吧,就这样。行设这一层我也把它写好了。那我们是不是要在配种机里面配置啊?一步步来啊,咱们一步步来。好。
22:11
好,第一步,DA并ID等于user DA class等于com.at硅谷点book.da.mp点就是它,好这第一步。再往下,我们需要service。好,User service class com.at硅谷点book.service.mp点好就是它,那么它里面是不是需要一个。Name等于user dof等于user。对吧,好,再来ctrl b ID是不是等于user了。你咋知道他有了?你咋知道的柚子了?咱们刚才在页面上是不是搞了个优质点读啊,同学们。那把这个前面一斜杠去掉,把点度去掉不就有了吗?所以好,回到这边来。
23:01
好,com.at硅谷点点好,controller.user controller,那么这个controller里面是不是需要service啊?Named user service。User service r等于user service,帮我看着啊,反正我写错了。OK,再来,再继续。那所有的工作咱们仅仅是做了一个登录验证。啊,所有的工作我现在已经全部写好了吧,我们来试一试,看看行不行啊,所以呢,我就回到user control里面去,回到这边来,咱们这边是不是得需要service啊。把它写一下。User service user service等于套,然后回到这里面来,User service.login u name和password,那它是不是给我返回个user啊,返回个U,那行咱们可以把这个user可以把它打印出来U。目的不是想打印,目的就想看这玩意儿能不能查到呗。如果能查到不就表示成功了吗?是吧,行停掉啊停掉,咱们再启动一下。好,我们利用它启动的时间,请大家帮我再思考一下,我们如果验证通过的话,我们下一步是不是要到首页上去。
24:06
首页上咱们是不是要去给我显示图书的这个列表被我关掉了啊?又关掉了啊。好,我们来看一下啊。滚到这边来。好,回到这边来打开。哎,我们要给我们显示这个首页,那么首页上这边有突出的列表。所以呢,我们最好有个叫book service。他能帮我们去获取这些图书。那行吧,咱们来试一试。先看一下有没有登录成功啊,现在没有报错,我们回到页面上去。回到这,你看登录页面出来了,咱们用户名输入一个用户名,我看一下啊。拎的OK行吗,同学们?好了,OK,咱们点击一下登录。好,然后它进入到断点,咱们看一下啊。呀,报错了啊,怎么报错了呢?看一下啊。
25:04
哦,我知道了啊,为啥我们这玩意光光关注他了啊,这个gdpc process里面是不是没改啊同学们。那行吧,咱们把它改一下吧,行不行再改一下啊不可DB是吧,配置文件改了再启动。所以说我相信大家现在离开的错误就知大概知道是哪里的问题了是吧,那就这样啊,大家应该能够回忆起来这个最初啊,一旦报错都不知道哪里出错了是吧,也不知道哪里去看啊,这个很简单,所以我说了项目经验其实就是对吧,什么叫项目经验?就是你犯过的错误比别人多啊,你解决的问题比别人多啊,这其实就是项目经验。再来看一下啊。行,这个页面出来了。一会儿呢,我把这个Li和密码直接把它写死了,写在里面,省得每次都要输,浪费时间啊行。再来看一下他报的什么错误啊。Email有问题,No such field exception是不是我们业务类里面的?
26:03
P类里面是不是没有这个email啊。你能知道我在说啥吗?No such field,他在查询的时候找到一个一个名叫email,结果呢,你回到这里面去,User里面去,我们发现。是没有啊,哎,少了一个。Private。音标补一个吧,把它补一个啊。然后呢,咱们去添加,稍等一下啊,就到下面去。Get。就加这一个,把它加进去,那这样是不是我这里面也少了。我这边有肉,那大家刚才都没提醒我。再重启一下。再来试一次。好,再让的启动一次,再来看一下啊。
27:01
把它关掉。这里关掉。然后稍等啊,回到这页面上的。登录页面叫use use log,接着烫。这边写个value。等于。然后这边写个八六对OK行吗。好,刷新一下啊。他没刷出来,没刷出来算了吧,直接写啊登录。好,进入到断点,咱们再来看一眼,哎,这次进来了,咱们看一下这个柚子有没有查到。是不是有啊,打开你看这些信息都有,邮箱也加载了是吧,角色也加载了,那说明我们登录验证是不是就通过了。好,这是第一步。
我来说两句