00:00
来看我屏幕啊。我们先简单的把昨天我们所讲的内容啊,大家所学习的内容,咱们先做一个回顾。昨天其实我们讲的内容很少啊,因为大家是第一次接触这个Java web,所以呢,咱们讲的速度呢,应该是非常慢的。那么大家碰到了很多的问题啊,我想给大家讲的就是这些问题,我们作为每一个初学者。你都是要碰一遍的。都是要经历一遍的啊,昨天我也给大家讲了对吧,什么叫项目经验丰富,项目经验丰富就是因为他所犯的错误,他所解决的问题比别人要多嘛,所以他的项目经验就比较丰富嘛,啊,所以大家一定要一定要去积极的对待这件事情。啊,所以说大家不要去,不要去害怕,不要害怕这个怎么我又出错了是吧,我是不是对这个东西不适合学这个啊,或者是不是我比别人笨,这个都不存在的,碰到错误是正常现象。很多时候我们往往我们你按照老师的要求一步一步的做,对吧,模仿老师去写,你一次性一口气把这个代码写对了,这不一定是一件好事情,同学们。
01:05
反而不一定是一件好事情啊,所以说大家不要去害怕错误,碰到一个错误解决一个,碰到一个解决一个嘛,这是非常正常的事情。怕就怕什么,怕就怕你现在碰到错误了,对吧,一直拖着。你感觉好像没啥是吧,这一一两个错误,感觉也不是很很很多啊,那你就就就累积的,然后越往后越往后过不了几天。那你这个写一个错一个,写一个错一个,你就没有办法去调了。啊,所以说第一个问题是大家碰到问题一定要积极的去应对。第二个就是不能不能,不能累积,不能去拖,碰到问题就解决问题。只有这样的话,大家才能够循序渐进啊,才能够按部就班的,咱们才能够把它学好。所以说碰到错误是很正常的啊,大家不用不用灰心。嗯,我们同学啊,昨天。碰到的第一个问题是这个项目和模块大家现在还没有分得清呢啊,咱们这个不是已经学过Java SE了吗?
02:01
这个我们第一个大家要做的是第一步,我们先新建一个project project。我们先新建一个项目。然后我们在这个项目下面,我们再去新建N多个model是吧,同学们。所以说来我们先新建一个项目,比如说我就新建一个Java项目。这边呢,我什么都不勾选,我就点击下一步,点击下一步,那么这个项目呢,我先意思一下啊,Project杠零幺我就这么写杠DEMO我就这么写,这就是我的一个project。好。它放在我们的0926JAVA web,这是我自己建的一个文件夹,我就专门放在这个文件夹里面,这个文件夹下面有个叫pro DEMO这么一个项目,然后我点击finish。好,我暂时先以新窗口打开。OK。那这就是个项目,然后我给大家说了,大家呢,你可以直接在这个项目上面写代码,那么你也可以不在这个项目上写代码。因为我们新建的一个项目,它默认情况下就有一个模块,这个模块的名字是不是和项目名同名啊。
03:05
啊,它默认情况下,第一个模块就是这个项目啊,名字是同名,所以呢,为了防止混淆呢,这个project你就不用它嘛。你就今天把它做成一个文件夹嘛。就把它看成是一个文件夹,这个文件夹下面有十个八个model,大家明白我的意思不?所以呢,这个src就不要了。啊,这个SC删掉不要。他就是个文件夹。然后这个文件在下面,我再去右键。六。你看,我再列出一个model。比如说这个model。既考虑我要不要带web,如果我们需要带web,我就把这个勾勾上,是不是同学们。但是哪怕假设你一开始你忘记勾选了也没事儿,咱们是不是说了两个解决方案啊。所以说我现在我就忘记了,我忘记忘记勾勾这玩意儿了,那么我点下一步,那请问同学们,我现在建的项目是不是就是一个普通的Java项目。
04:02
那我就这么写啊,PRO01JAVA代码我就意思一下啊,就这么写那行。请问一下同学们,现在我是不是在一个project下面新建了一个model?没错吧,不就是这样的吗?所以呢,假设我要再新建第二个model,你不要选中它右键六。你要选中上面这个project。是不是同学们选中这个project,然后你去一个model。好。这是一个,这是一个model。再继续。刚刚我说了,我这个model我忘记加web的模块了,所以现在我要对它加web模块。所以我就点了个file。然后呢,这边有个叫project叫项目的结构,是不是点它。然后。模块。你看它这个末端里面是不是有两个。因为我。因为我和大家说过,你在新建的一个项目,默认情况下有第一个model,是不是和项目名同名啊?
05:03
其实其实这玩意儿,但是这个东西我们是不是没有用,它SC都被我删掉了吗。他我说了,它仅仅是个文件夹嘛,可以管理很多个model嘛,是吧,同学们,所以这玩意你就别理会它了,你就看下面这个,这是我们的model,我要给他新新建web。好,那么我们怎么去新建web呢?你看这边有个叫face是吧,同学们,这个face里面我就点这个加号,点那个加号是不是一个叫web呀。点它,然后是不是找到它呀,这就是我们的model,再点击OK。你看这样我就建了一个,我就建了一个web模块了,那大家需要把这个这个路径,需要大家把它看一下,因为咱们现在呢,我们是在ID里面去新建的web项目,我们还没有把另外一个小工具,另外一个小工具叫啊,咱们在下面一个阶段咱们才会学到。啊,麦加进来的时候,那么这边的路径呢,咱们要需要去把它改一改,现在咱们暂时还不需要改,但是我希望大家养成一个习惯,你新建了一个web之后,请你养成习惯,到这边来看一下,稍微检查一下哦,PROJECT01JAVA DEMO,这是我的第一个模块名。
06:09
下面一个web文件夹哦,下面一个web in粉,还有一个web.X文件是吧,同学们,哎,你要检查一下。下面这边是web,这是没有问题的。那就是这样的,我点一下应用就可以了。我点一下应用。这样就表示我这边多了一个web文件夹,能看到我左边不,你看它上面有个蓝色的小点。啊,表示当前把它识别为一个web文件夹。这个web就相当于我们最初在通开里面所新建的那个百度文件夹。相当于是百度那个文件夹。还记得不?咱们通一开始我们没有用ID啊,是不是我们自己手动去新建文件夹的啊,相当于他的contact root那个跟目录。再来。那么现在我已经把它变成一个web项目了,那么一个web项目它需要部署到通开里面去。
07:04
他并不是把我们源代码部署进去。而是把它的一个部署包,把它部署到通里面去,这个部署的包我们称之为叫artifact。所以这边这边他就给你一个警告了,他说你现在把web这个模块加进去了。那你加进去之后,说明你是一个web项目。你是一个web项目,将来你就需要部署到Tom cat上面去。那么你要部署到通盖的,你就需要一个部署的包,但是你现在还没有部署的包呢,他问你要不要生成那个部署的包?所以我们就点create生成。点一下就好了,假设我没有点也没有关系的,没有关系的啊,我回到artifact这边一样的点那个加号也可以,这边有个叫web application explore的,能看到不。就这个,我们点击服装model点它就可以了,下面这个是什么?下面这个就是压缩包。
08:01
就是压缩包,咱们是不是学过架包?Jar架包,架包是Java应用程序的这个压缩包。那么这个是什么?Web application?Active。这个叫什么?这个叫挖宝,War宝,对的。哎,这是我们外部应用程序的压缩包。那么web应用程序的压缩包,你把它扔到咱们通开的是不是一个叫web apps?有印象不?咱们通盖的文件夹是不是有什么B啊,Conig呀,Logs啊,Webps是不是啊?哎,咱们是不是放到web apps里面的,如果你把这个袜包扔进去,Tom盖会自动给你解压的。那么我们也可以不扔一个压缩包,我们扔一个压缩包,解压之后的就是上面这个。XP,我选他。啊,然后选它点击OK,这样他就能给我,你看这边是不是还叫wa啊,它就是一个挖包的一个解压缩的包,这个名字随便你改不改随便无所谓,反正我们又用不到这个名字。
09:02
啊,反正我们用不到。好,再来,这样我就创建好一个artifact。点击应用。你再回到这边来,他就不报错了啊,就不报那个警告了,因为你当前的外部项目已经有个压缩包了嘛。再来。再继续。这是第一个问题,我把它全部写下来。啊,我暂时先写到这啊。第一个问题,我们新建项目,然后呢,新建模块。啊,这是第一个问题。然后呢,第二个问题是在模块中。添加啊,添加我们的这个叫web。这第二个问题,第三个是创建。叫创建,这个叫,这个叫什么?这个叫active。Architect。看有没有拼错啊。AR。Artifact artifact,对的对吧?A artifact创建artifact。
10:04
其实就是创建部署包啊,你就认为是部署包就可以了。就是这样的。好,这是这三个问题再来。稍等一下啊,我把它放到今天的文件夹里面去。放到。放到素材里面吧,就放到这儿。我写一个叫叫昨天碰到的问题啊,昨天或者叫复习吧。然后呢,咱们同学还碰到一个问题,第四个问题是什么呢?是我们的library和我们的artifact之间的关系。啊,这个问题是什么呢?这个问题是我们先有什么呢?先有rifact,就是说如果我们同学这个web web呀,这个模块是打勾的,一开始新建模块的时候是打勾的,那么它会自动的给你创建一个artifect。那也就会出现叫先有artifact,后来才。添加的加文件,比如说MYSQ的加文件是不是。
11:02
啊,后来才添加了马加文件,那么此时注意到此时。其实这个家暴。并没有。添加到部署包中是不是?此时他并没有添加到部署包中。那么。在什么呢?那么我们的project setting。Settings,也就这个菜单叫project settings是不是或者叫project这个里面啊,那么在这个中啊,有一个叫problems。中会有提示的。是不是这样的?在这个地方是不是会有提示啊,他告诉你。某某某library。你现在在这个project里面有,但是呢,它的部署的包里面并没有更新进去,是吧?同学们你需要把它ADD to什么什么,是不是需要把它添加进去,要不然我们同学会有疑问,老师明明我这个加班我加了,但是我运行我的项目还是给我包驱动找不到,是不是同学们咱们有好几个同学碰到的。
12:03
就是这个问题,所以我现在你看我加一个library,把它加进来。Library。第一种方法和我们之前一样,你可以在这边新建文件夹,然后加个library。然后呢,把我们的这个包把它加进去。第二种方法,比如说我们当前这个模块啊,和我们当前的模块有关系的,我们就在这个web下面有个web in,其实啊在我们这个web in下面,我们可以在这里面再去新建文件夹,叫AIB。然后把架包扔到这里面去也可以。明白我意思,不放到这里面去啊,也是没有问题的,所以现在来,我把那个家宝找到。我找了地盘,找到library。好,我找到MYSQL。这个CTRLC。那行啊,CTRLV粘进来了好。那你注意了,如果是在我们web in下面,你把这个粘进来啊,你可以不用不用操作粘进来就可以了,我们再来看一下,找到project structure。
13:02
稍等一下啊。他这边没有给我报错是吧,没有报错,好就这样的,这是我们web in里面的,那比如说假设这玩意儿我不是扔在web in里面的,我把它放到这个项目下面。是不是同学们我放在这边了,那你放在这边是不是就和我们这个model没有什么关系了?那你注意这个这个library是我们很多个model共享的吗?它默认情况下和我们的model是没有关系的。第一步我们先右键,叫ADD as library。点击OK。好,这第一步我们把它先设定为它是一个library,是一个库。然后我们是不是要在这个项目里面要引用它呀。我们怎么去引用它呀,同学们。我们是不是file project,然后我们找到model。然后找到这个model是不是,然后找到第三个选项,搞叫depends,是不是它依赖啊,它是不是依赖于那个library啊,所以你点那个加号library是不是要把它加进来啊,哎,就这样的把它加进来,点击应用点击OK,那你把它加进来之后,表示我当前这个model。
14:09
依赖于这个library,但是我这个model下面是不是有一个artifact,一个部署包。你让我的这个模块依赖于这个library,但是你的部署包是不是之前就已经生成了?附属包还不知道呢,所以怎么办啊?第一种方法,你把R再给它删掉,重新新建一个,它就能自动包含进来。是吧,第二种是不是你这边就把这个library加进去啊。哎,是不是同学们两种方法都可以,所以你点这个fix是不是有个叫ADD呀。ADD library to the artifact,这样吗?没错吧,这样这个library就也放到这个部署包里面去了,点一下它。哎,这样就没有问题了。啊,这样就可以了。好了。好,这是这是这个问题再来。
15:00
我们在这边写一下。会有提示啊。啊,这是这种方法会有提示的啊,我们选择啊,我们点击我们点击fix。选择ADD to。什么什么是吧,同学们,这是这是这种解决方法,另外。啊,另外我们也可以直接把library文件夹直接啊,直接新建在新建在我们的web in项。是不是这样的,直接新建的外部硬分项,但是这样的一个缺点是什么啊。这样的缺点啊,这样不好的地方。不好的地方是,这个library只能是。当前这个model独享。是不是如果有第二个model?我们需要再次重复的新建library。
16:02
是吧?有第二个model,你需要在第二个model的web里面再次重新新建library吗?那你有十个model,是不是有十个library这个文件夹呀?哎,没错吧,同学们啊,就是这样的,那如果我放在这个项目project下面,Library是不是所有的项目都可以都可以去去共享这一个。啊,这是没有问题的。这样的,这是不好的地方,那好的地方就是比较方便,不需要我们什么ADD to啊,不需要那一大堆了,它不需要有提示,因为你放在web in下面之后,那我启动的时候,它会把它加进去。好了再来。好,这是大家碰到的这个问题。再继续,我们昨天还讲了哪些内容呢?来我们这个已经建好了,建好之后呢,我需要在这边配置。第一步,这是我们的template模板啊,这个模板下面我已经有一个通盖已经配好了,在这。8.0.42,应该是已经配好了,是吃这个吧。
17:03
我们已经配好了,所以我点了个加号。啊,我点击加号,加号里面有个To Get,一个local,我就可以直接去部署这个model了。那这边我就随便写个名字吧,比如说我写个叫担保,意思一下啊,啊这个名字其实是无所谓的。那行,这个是不是要把它部署进来啊。我就点那个加号,我点这个artifect那行把它部署进来,部署进来之后这个名字,同学们,这个名字是不是我将来在页面上访问的名字啊。这个是不是就是我说的叫context root呀。是吧,同学们叫root,你把它改成叫PROJECT01。或者大家就一步到位,直接改成斜杠都行。都可以。啊好,所以我们改一下,比如说我就意思一下叫pro加零幺好点一下应用。然后呢,同学们这个server这个地方是不是有个1URL,请问一下同学们这玩意儿,我们昨天老师是怎么解释的。我们是不是说的是这个地方,它指的是Tom盖启动之后,它会自动的打开一个谷歌浏览器,然后呢,它去访问这个网址是不是,所以这个网址你要把它设置正确了,我们昨天有同学默认就是这个网址,所以说。
18:13
来,我们看一下。部署啊,在部署的时候。部署的时候,咱们需要修改,第一个叫修改application context。啊,就是刚才这边看到的。Application要修改一下,然后。然后再回到呃,再回到我们sofa选项卡。选项卡要检查U2UU2U的值。啊,这个值一二爻的值。啊,指的是。指的是什么呢?指的是通开的启动完成后。啊,启动完成后,自动打开你指定的浏览器,你指定的浏览器,然后默认。
19:02
访问的网址是吧,同学们这边有呢,叫阿浪浪,这个叫运行。当我这个Tom盖啊,当我Tom盖启动好之后,你如果把这个勾去掉,同学们。你通盖启动好之后,它是不会给你打开这个谷歌浏览器的。明白不?当你把这个Google上表示,当我启动完成之后,我要打开default,那我这边default其实我指的就是Chrome。这个T我们在菜单里面是可以设置的,同学们。那么默认情况下它就是Chrome行吗?同学们,那么我们有些同学可能机器上没有Chrome,所以说这边他可能默认选择的是其他浏览器。啊,这个咱们不管它行,它指的是当我启动的时候,我要打开一个浏览器,然后U要要访问的是谁好,我们同学这边碰到问题了啊,这边碰到问题是期中好之后他说他说老师报错了,报404错误。404,昨天我给同学们记下来的404,他指的是找不到你所指定的那个资源。
20:03
啊。就是我们写一下启动启动后。启动后报错404 404意味着什么呢?意味着找不到指定的资源。是不是意味着找不到指定的资源?假设我们现在路径是这个,同学们。我给大家说一下这个问题啊。如果我们直接这么去写。啊,如果。如果。我们的网址是这个。那么末的情况是什么呢?那么。那么表明。表明我们访问的是index.html。那就要看你的项目里面有没有index.html。那我们项目里面是不是已经昨天改了一个叫哈零幺吧,我记得。是不是叫hello01.h根本就没有index.h所以人家就报404嘛。
21:01
没问题吧,你要知道报错的原因,所以他才会报404错误。好。那有人说老师你怎么知道他找的是index.html呢?我们就借助这个机会给大家看一下,其实啊,我们看一下Tom盖C盘。Software。我们找到Tom盖。Tom cat,好找到config。那行在这个里面,我们有个叫web.XM文件,我们打开。You f,我们找一个叫welcome。或者。你看,同学们就在这叫welcome fair list叫欢迎页列表。如果我们所输入的URL后面,你没有输入任何的资源。那么它默认情况下先访问index.htm。如果index.html没有。那我就访问index.htm。如果第二个页面也没有,他再去尝试的访问index.jsp。
22:03
如果这玩意也没有404。能理解,不,这叫欢迎,欢迎页面列表。所以说比如说我们想让他老师,我就想访问这个网址,而且我不想让他报404怎么办呀,你是不是把你的hello01.htl加进去不就完了吗。CTRLCCTRLC复制一个01点没有。是不是啊,你加进去就好了。所以大家一定要能够理解,不要死记硬背,一定要理解,这是在我们通get里面,当然说实话啊,这个因为咱们还没有去讲到,没有关系,咱们正好利用这个机会说一说。这是加到To Get里面去。当然咱们也可以加到自己的项目里面去,这是通K的,它的web.X文件,请问一下同学们,我们自己的项目是不是在web INF下面也有个web.X文件?那我们其实也可以在里面去加这个标签,Welcome fair list能听懂吗?
23:01
那你就把这玩意CTRLC拷贝一份吧,放到你自己的web.X文件里面去,然后你就改成你的换页面是谁谁谁。行吧,同学们,嗯。好,顺便说一下这个问题。再继续。再来。这是大家碰到的,碰到的这个第五个问题。我们我们写一下啊,我们可以通过welcome。稍等一下啊。我们可以通过welcome file list。标签。进行设置啊,欢迎。是吧,标签进行设置换页,那么两种方式都可以啊,在通开的。web.XL。设置。或者。自己。项目的web.XL中设置。都可以。啊,就这样子行。
24:00
这是第五个。再来。这是我们同学碰到的一个问题,再继续,我们同学还碰到什么问题了呢?啊,还碰到什么问题呢,同学们。405是吧,行,这个是一个比较高级的问题啊,405问题。啊,这是很正常的,大家应该要碰到这个问题,碰不到不一定是不一定是好事啊,碰到应该是幸运的,405问题是什么问题呢?大家是怎么解决的?四令问题是指的是当前,当前啊请求的方法叫不支持,叫no support。啥叫不支持。比如。比如我们表单。Method等于post。那么我必须那么。必须对应。Do post,如果你不对,否则报错,否则报405错误。
25:03
啊,否则你就会报405错误了。今天我们会给大家解释这个这个405错误,他到底是怎么报出来的。所以呢,我们同学那有同学,一般情况下大家不会说这两者不对应,一般情况是你个method忘忘记写了。是不是啊,Method,如果你忘记写了它,默认的method就是get。能听懂吗?它默认就是get结果嘛,你还是按我的代码写在里面,写的是do post,没错,那你get请求发过来,Do post能能响应吗?他不能相信就会报405了。今天咱们会看一看,为什么我是get的请求发过来,他就报405啊,咱们今天会看到。再来。我们再接再再接着往下看。那大家还会报一些错误,比如说大家会报一些空指针的问题,空指针。或者是什么啊。控制针或者是number。
26:00
Format。异常。是不是?其实报这个number这个异常的原因也是因为控制针。因为我们有,因为有价格和库存。如果价格取不到。结果你想对那进行intake。点peasant。是不是就报错了?啊,就会报错。那这个错误的原因。错误的原因啊,大部分是因为什么呢?是因为name等于这个,比如说price。此处写错了。结果。结果在的端。还是使用request.get parameter prize。啊,去获取是不是这样的,也就意味着你这个name等于price和这个request.get这两者不一致。
27:03
你这个写的名字和这个写的名字不一致是吧?同学们有同学会不小心啊,不知道咋想的,加个空格啊,为啥有这个爱好呢,是吧,加空格,那你这个price空格是吧,你就变成这样了。啊,之前有同学犯过这个错误。那这个让我让我让我给他调是吧,我第一眼看上去我感觉没啥错误,第二眼我一看,呃,这个多了一个空格是吧,估计这同学对我有意见是吧。故意整我的。所以大家一定要小心一点,开玩笑啊。这个大家一定要小小小心一些,写代码的时候不要做其他事情是吧,一定要专专心致志的啊,大家你仔细的去观察,你写代码的时候,很多时候你出bug。百分之七八十的原因都是因为你当时思想开小车的。突然看个新闻,突然回个谁的微信对吧,突然这个和女朋友语音一下,只要你一走神立即报错,立即就出bug了,这个bug隐藏在里面,你后面,你要花很大的代价,花很多的时间,你才能把这个bug找到,那何苦呢?还不如写代码的时候就一心一意的什么事都不干,谁也别想打扰我,我这一个小时我就专门写代码。
28:04
啊,所以大家一定要细心一些啊。这是大家所所碰到的一些问题啊。所以最后总结一下,还是那句话,千万别怕报错,至少老师还在这儿呢是吧?你现在还没踏入工作岗位呢,别指望着工作以后还有人天天去帮你啊,这不太现实,并不是人家不愿意帮你,而是因为人家也有一大堆开发任务在身上呢,人家哪有那么多时间帮你?是吧,但现在你是在学习阶段啊,所以说大家不要怕老师烦。啊,这个不会反的,你不要总是想着我问问题,是不是老师觉得我问的问题很低级,不会的,我们每一个高级的程序员都是从犯低级的错误开始的。啊,所以但是我我想给大家讲的就是你一定要踏踏实实的一步一个脚印,只有这样你才能学得好。啊,不可能说谁随随便便你就能把它学的很好,不可能的。那么这是我们昨天所说的内容,然后最后一点点时间,我们把我们把昨天那个小案例,我们再来回顾一下,这玩意儿我就不看了,我就把它关掉了,行吧,同学们。
29:03
直接close掉算了啊。Close。那么这个把它关掉。好,昨天我们讲的是这个。其实我们讲的很简单。首先我们这边有个页面。叫ad.h页面。这个页面上有一个form表单。这个封表单,当我点击提交按钮的时候。我就向这个组件发一个请求。同时我把这四个数据带过去。所以呢,我们就要去看一下这个组件是谁。所以我们就打开web.X文件,我们就能找到这个斜杠ad啊,我们同间还会犯一个错误,就这个斜杠会丢。是吧,同学们好。呃,那个技术被我关掉了啊,我把它打开一下。把它补一下啊。好在这里面。所以第八个,第八个就是我们的121。
30:02
啊,U21杠。一。斜杠开头。啊,这个中路会丢。那行,再来。所以呢,我们刚才发的请求啊,X这边发请求,我们就能找到这个杠ad,找到他就能找到和他绑定在一块的,和他在一起的这个name。我找到map里面的这个STEM,我就可以找到对应的当中的STEM,这两个名字是不是一致啊,就能找到它,找到它我就能找到这个类,是不是找到这个类我就可以点进去。点进去。那么在这个类当中,我们就要看一下刚刚我们这个表单,它发送的请求是不是请求啊。那你发的是post请求,行,我就找一下这个do post是不是同学们。我找到这个do post好。那获取获取获取我就获取到了是吧?同学们,这是我们从request对象当中获取到的。
31:01
获取到的数据,我们把它,诶通过DA啊,当然我们把它封装成一个float嘛,然后通过DA把它保存进去。你看这就是我们昨天讲的内容。好,那我们再继续啊。
我来说两句