00:00
刚刚有同学啊,刚刚这个刚刚就有同学说这个对吧,咱们之前那个水果库存的那那个内容啊,他想把它这个想让我这边有反应是吧,数据库里面有有有记录是吧。那行吧,我现在我就在这个项目里面来。啊,我们简单的来写一个。这是我们的一个HTM页面。这是一个HTM页面。我下面呢,我就在这边写个表单。Form表单。同学们。然后呢,这里面比如说我们就往我们那个水果系统里面去加数据行吗?同学们,我就想往里面加数据第一个名称。我把它写一遍,Input。Type等于text。等于FM这个时候。Name属性必须得有。因为咱们今天要讲服务器的编程了,是吧,那手机有的话是不是才能发给服务器啊,必须得有啊,不能忘了。再来价格。Input。
01:00
Type等于text name等于price,好,第二个。再来库存。Input。Type text name等于price。再来下面一个是。F,写错了啊,帮我看着啊,写错得提醒我一下啊,再来备注。Input。Type text name等于mark。哎,有问题吗?同学们,没问题吧?没问题吧?名称、价格、备注库存好再来个提交。Type等于submit。Value叫添加行吗,同学们。那你的表单发给谁呢?发送的方式我们先写上去,Method等于post,我们说过有get post是吧,好。我们以post方式进行发送。发给谁呢?Action?我们发给A点读。
02:02
我们就发给ad的点度,哎呀,这个ad的点度怎么还有个点度,这啥玩意儿,我随便瞎写的,你不写点度也行。你就写一个叫ad。没问题的,他仅仅是个代号。它其实指向的就是咱们服务器端的一个组件。好,这个表单我已经写好了。来,我们回到画图上面来啊。我这个图把它保存一下,然后新建一个。这是我们的客户端。这是客户端。这是我们的服务极端。OK。首先第一步想想象一下,第一步我们的客户端向我们的服务器端发一个请求。他要请求的是我们的ad.hl是a.HM吗?这名字没改是吧,好零幺,我现在就把它改一下,改成叫ADD.htl行不行,同学们我把它改一下啊。大家的快捷键应该是shift加F6啊,我这边也改掉了,叫al shift加号。
03:02
好,ad.hd因为我用的是AK模板啊。就这样吧。那行啊。客户端。第一次访问,访问ADDHL,请问服务端有没有这个资源?有的吧。杂志资源不是写在这儿吗?是吧,这个不是页面写在这吗?所以是有的。有的话他就响应给我们的客户端。如果没有也会响应给客户端,只不过响应给客户端叫404啊,就找不到资源,先不着急啊,先不着急,好响应响应回来了。那他响应回来的内容。是不是就是什么HTML什么什么一大堆啊。其中还有什么form表单吗?是吧,还有什么input type等于什么text,一大堆。那这些内容对于浏览器而言,是不是人家能把它看成像,能把它解释成是一个网页哦?那这个网页里面咱们就应该有了。好。名称单价。
04:02
库存。备注啊,最后还有一个按钮那行吧。文本框名称。担架我们框。好,库存我们框。好,还有备注。好简单意思一下啊,最后还有一个提交按钮,就这样子叫添加。那行。所以咱们浏览器端进来看到这页面了。然后。我们的用户啊,把名称啊,单价呀,库存啊,备注啊,输好了,输入进去了,点击添加,添加是不是一个提交按钮啊。我们这是个表单,这个表单上面是不是写了一个action啊,同学们。Action是不是等于叫ADD是吧?同学们好,咱们写这句话把它标注为蓝色啊,咱们写的这句话叫action等于ad。所以当我一点击添加的时候,同学们。但我一点击添加。他又会向我的服务器发个请求。
05:00
啊,向福吉发个请求。那么向服务器发请求,他请求的就是ad。啊,A。请求ad,那么他会把数据带过去。其中第一个F等于假设我们输入的啊,假设输入的是叫Apple,意思一下啊,然后price假设我们输的是五块,然后F假设我们输入的假设是50斤嘛。还有个remark。好,这叫OK,算了啊,OK。好,这个是字符串。这是我们发给服务器的,就把这个值发过去了。那么我们服务器需要有一个组件来接收。我们需要一个组件,这个组件其实就是ad组件。没问题啊。这个组件其实就是A。行吗?同学们你先别管,老师你先别管,这组件是啥你先别管,总之这是我服务阶段的一个组件。
06:02
这个组件对应的名字就叫ADD,你不是X线等于ADDDD吗?你要你要发请求给我这个ADD组件吗?那行,我复印这一个组件叫ADDDD。然后这个组件。啊,然后这个租金。它内部。我们可以再去调用DA。我们可以再去调用DA这个组件。好,我把它写在这。这是咱们前面学GDPC学过的fruit do这个组件,或者NPO组件行吗?同学们这都没问题,那么它里面一个方法叫爱的方法。然后可以把我们一个可以添加到数据库。所以。咱们后面是DB数据库。啊,是我的数据库,然后呢,它和它之间应该是互相通信的。没问题吧?他们之间是互相通信的。现在的现在咱们的焦点,Do咱们不管它了,Do咱们已经写过了吗?
07:03
是吧,咱们已经会写了,下面咱们的焦点就全部集中在这个ad这个组件上面。那么ad这个组件是啥呢?它是个Java类。它是一个Java类。它对应的是个Java类。这个加的名字。我们就称之为叫ad。S。是什么?大家会觉得很奇怪啊,是两个单词。服务器net net叫小应用程序。S,它的意思就是指的是服务器端的应用程序。其实就是福建的一个小应用程序组件,就是当前这个组件,这个组件完成什么功能。他完成什么功能呢?好第一步。第一步,他完成的功能。
08:03
获取用户。发给我的数据。用户是不是给我发了好多数据哦。名字啊,价格啊,库存啊,备注啊,这是用户发给我的数据。啊,这个用户指的是客户端行吗,同学们。啊,用户。客户端。好,发给我的数据。第二个。调用do。中的方法。完成添加功能。是不是第三步,我先打印一下,打印添加成功在控制台打印。打印添加成功。下面我们就来做这件事情。我来新建一个类叫ad。看好了SC,下面我来清洁。Com点。At硅谷点,咱们现在随便写个叫Les。
09:01
啊,放在这个包里面,我写个叫ad行吗,同学们。这是一个类。这是一个类。注意了。如果是一个普通的类。他是不能够去获取用户发给我的数据的。啊,我得让他去继承一个类。继承。HTTP斯,我得让他记上,他那这玩意好像没有诶。倒也倒不进来。是什么问题呢?因为这玩意儿这个累啊。它不在我们的GDK的包里面,咱们当前这边有JDK能看到吗?1.8GDK它不在JDK这个包里面。他在哪里面呢?他在另外一个包叫SAPI的一个包。斯的API那个包大家看一眼啊。我们找到library。它里面有个叫SAPI能看到吗?这边有夹包,我们说过架包就是压缩包吗。
10:01
打开。打开打开。好,我们找一下,看能不能找到HTTP,稍等一下一个HTTP包啊在这。打开HTV上,你看是不是有啊。所以说,所以说我们现在想用到的一个类,它不在JDK里面,而是在某个价包里面,那我们是不是要导架包啊。所以第一种方法把这玩意儿。导到我们项目里面去,导到我们library里面去是吧,同学们第二种方法。第二套方法比较简单。我们只需要把它把通盖的依赖加进来就可以了。怎么把通盖的依赖加进来呢?点他。找到他。我们找到我们当前的model,找到第七个,就是它找depends。依赖吗?它需要依赖于1.8再添加一个library library啊。Application server打开是不是通盖呀?这是不是咱们干的配的呀?
11:00
通盖就是它点击它点击应用,点击OK,我把它加进来了,你看把它打开是不是有两个了,一个是JDK,一个是通盖,通盖再打开是不是有两个。其中一个就是API能看到吗?A,那行这个加进来之后,我再来导包回,哎,它出现import了,看到了吧,就把它导入了,那行这是一个小插曲啊,咱们把它导入进来,行咱们再继续啊,回到我们主题上来。我们看到刚才的图啊,第一步要获取用户发给我的数据。同学们,我们刚刚在表单里面,大家还记得我method写的是啥不?Form表单method。我写的是啥?是不是写了个post呀?Form表代码。还记得吧,一个X型属性,一个ma的属性吗?我写的是。那我写的是post发给你,那你注意了,同学们当前我们这个组件。它里面有个方法叫do post。
12:02
敲回声啊,那行吧,我不敲啊,我一一一点一点来写吧,他里面一个方法。Public VO do。这个方法它能帮我们去响应你的post请求。你发一个POS请求过来,这个方法就会被调用。这个方法就会被调用,那么这个方法,这个方法完整的格式,我得把它写出来。IO exception。Exception,然后它有参数HTTP。HTP。好,我得把它写出来。当然。你没有必要像像我这样一点一点把它写出来,没有必要咱们有IDID比较简单删掉。是不是有啊。你只要写个都不就有了,敲回车。是不是就有了这个是protect,因为它是从父类里面继承过来的。啊,所以是protect protect,那你写的有没有问题啊。
13:03
有问题吗?没有吧?方法重启的时候是不是访问修饰符不能缩小呀,要大于等于嘛。哎,所以你写B也没问题啊,那行,这句话把它删掉。好,我把这个参数改的完整一点啊,Request。这个叫response。好。慢慢来啊,慢慢来。这个方法。它有两个参数,一个叫request,一个response,咱们先不管这个参数,咱们先看第一个,第一个叫request。前面我给大家,我给大家写过,当我们客户端给服务器端发请求的时候,我是不是写了一个叫http request呀。是吧?同学们表示发的是请求吗?那么客户端给服务器端发请求的时候,你注意了,我们服务器端就把这个请求封装成一个对象,叫request。你给我发信息啊,给我发请求,我就把这个请求啊封装成叫request。
14:04
就是这个箭头,我们就把它封装成是一个request。叫HTTP。那这玩意儿,我也可以通过request对象来获取你里面给我发的信息。所以FM price的mark我就可以能获取到,那我咋获取?Request get parameter。Get parameter parameter这个单词叫参数吗?请求里面去获取参数。那你刚才发的名字是不是有FM?那就获取FM,就这样的。好,FM。再来。下面一个是不是request get分price。好,再来获取。Price要注意这个获取到的price,人家是字符串。它只能是字符串啊,我们通过HTP请求发过来的只能是字符串,一会如果是数字,你再强转吧。
15:02
咱们可以把它强出来一下。Rise等于。intake.pu。Price s。强一下。再来request getter。那么我们还有。好,我们再把F杠的。再强转一下。好in。I。等于intake.pass I。好,还有re。request.get requestmark。是不是这个你行,那这些值我都获取到了呗。获取到,可以把它打印出来试试呗,FM。再打印,比如说price。稍等啊。Price。好,还有我们的F。还有我们的mark OK。就这四个值嘛,咱们试试呗,看能不能把它打印出来啊行。
16:00
写到目前为止,我不知道大家有没有一个疑问啊?我现在新建是addd。老师,我们这边发请求,Action等于ad。你咋知道ad和ADD就能对应上的呢?那显然嘛,如果你没有设置,肯定对应不上嘛。现在我们得设置一下。现在我们就要设置一下ABB。对应的就是ad。我们得把它设置上去。那它们的对应关系我们怎么设置呢?我们找到web.XL,找到它。然后在这里面。我们来写一下。好,这个名字呢,咱们就随便写了。比如说我觉得我就AS。这可不能随便写。Class,我们的加班类就是它。所以你得把权利名写上去。好敲毁这啊,它自动给你把全里面加上去。
17:00
好,这是再来。Mapping。叫映射,Mapping叫映射,那这个名字咱们得保持一致。好,注意看啊。斜杠一。好,我已经配好了。现在我把这流程我来给大家说一遍。用户发了一个请求。Action等于ad。我写的到。第一步。用户发请求。Action等于A是不是?第二步。服务器。服务器。啊,也就是通不盖的。Tom盖中。他们盖中啊,咱们web.XL或者叫项目中嘛啊。咱们当前的项目。项目中web.SP文件中。找到URU-pattern。
18:03
等于斜杠A能找到吗?能找到吧。能找到。找了他之后,咱们写一下啊,在第12行。第12号。能找到了,那怎么办呢?第三步是什么呢?找。第11行。第11行的名字。LA。啊,它等于什么。等于ad是不是同学们行找到了怎么办?第四步是什么?走。斯,咱们现在是在mapping里面的啊,找和mapping找和mapping中。Them。一致啊。一致的。是不是经常找他?是不是找到它之后,就看到里面的塑料name是不是一致啊,就能找到这玩意。
19:04
好,也就是说找到第七行。找到第七行。第五步,找到第一项之后,再找第八行。那我就很顺理成章找到第八行,因为第几行和第八行是都是放在这个标签里面的嘛,啊,就在下面好找第八行的。Class。那么我们就能找到这个类了。com.at硅谷点点A是不是第六步?用户发送的是。Post请求。是不是?Method等于它发出。因此。因此容器也就是通不盖的。通盖的会调用。会执行。Ad中的do post方法。能听懂吗?它就会调用这个do的方法,所以这个地方do它就会被执行了。
20:03
啊,这个流程我已经把它写在这儿了。第一步,用户发请求找到他。找他之后就找他。找到他之后,就能找到这个他。找到他就来找这个类。找到这个类哦,又发现你是post,那行就用它里面的do post。行吧,同学们,它的过程就是这样。所以咱们来试试看能不能把它打印出来,启动一下。好,现在已经启动好了。他报了个404,怎么报404了呢?
21:00
为啥啊?报错是因为什么,我是不是已经改成ad.html了啊,所以HELLO01还有吗?没有没有就报了404,咱把它拷贝下来啊404。遇到一个,咱们就说一个。好,我把它放在放在哪里呢。稍等一下啊,放到这个项目里面。好,我现在记事本文件啊,404。找不到。找不到对应的资源,行先放在这边啊。再来,所以现在我回到浏览器啊。我们要访问的不是哈零幺楼。咱们要防的是A喽。是不是啊,这样就能访问到了,那行吧。把这个全部清掉啊。再回到浏览器。好,右键检查。我们回到network。我现在准备发请求了啊。名称咱们写个APP。五块库存50备注,OK,我点击添加了啊,点了一点点是不是就会发请求了。
22:07
点一下。哎,你看一下这边是不是就能接收到了。咱们把这个过程一步步来啊,第一步发请求的时候,咱们来看一下啊。好,我们那个请求呢,在这里面啊。一边小。往下拖一点,是不是这个好点他。来,我先把最大化吧。来点它之后大家来看一下啊,这个关掉。首先。他有个叫request,叫请求投。请求图里面向谁发请求呢?我们要向LOCALHOST8080发请求。啊,我们需要向他发请求。我们所请求的,我们所请求的在我们的这个general里面啊,Request URL,我们要向PRO07A发请求吧。
23:02
我们请求的方式是post。那我们表达的那些数据呢?数据在哪里呢?哦,这边也叫form data是吧,同学们。这是,这已经是第二次看了,没错吧,前面给大家看过一次,FM由price由F杠的remark里都有。那行发给服务器了,那服务器。回到这边来。他是不是会把这些值接收下来?接收下来之后,是不是就会打印出来,好,所以我们控制台进来看到了。没错吧,同学们啊,就可以看到了。最后一点点,剩下的步骤就比较简单了,剩下的就不是咱们新内容了,剩下的我要去调用一下DA。所以呢,我这个地方呢,我就直接拷贝了行吗,同学们。我把它拷贝过来啊。我们找到flute。呃,这样我把整个src下面全部拷贝到src下面行不行,同学们。把它拷过来啊呃,艾特硅谷稍等一下啊。找到flute。
24:02
嗯,怎么拷贝呢,右键我先打开啊。打开或者这样吧。反正新建也不麻烦啊。咱们接到这一集,我们写个float。九。然后这个P里面这个这玩意肯C。这个写写不对啊。这是个内容。真是的。右键delete删除。稍等一下啊float下面新建p.float是吧,同学们。然后把这个复制一遍,肯定会把它覆盖一下吧。是不是?哎,没错吧,我覆盖了一下嘛,是吧,那行再来。呃,这里面是不是还有什么低。这还挺还挺麻烦的哦,来do这个包,咱们新建一个叫float do,这是不是接口啊。那行,咱们把它接口CTRLCCTRLV覆盖一下行不行啊。可以的啊,再来MP。
25:00
新建Java类,呃,ip.float DA I po。然后这玩意儿咱们也得复制一下。就是这个是吧C。到这来就飞覆盖进去。Over,覆盖进去啊,还有一个best best丢咱们也把它覆盖进去啊,研究C到这边来。新建一个叫best best do。覆盖一下。嗯,然后呢,家暴我得加进来,家暴这边好像有了吧。有了啊,呃,我们这个当中是不是有没有文件啊,我看一下。Properties好像没有了。啊,没有哦,我复制的是这个零五里面的,零六里面才有数据源连接池呢,才有那个pro呢,是吧,同学们,那行没有就没有吧,啊没有咱们更轻松一些啊。我已经全部粘过来了啊。粘过来之后我们再回到呢在这。好。
26:01
那我这边就不打印了,行吧,同学们。我是不是得定fruit do?等于new,没错吧?然后do.add是不是需要个float那行FM。F remark,咱把它放进去好,这个的方法没有,好像缺个ID,咱补个零吧。行不行,同学们。这样我就添加好了,添加好之后咱们打印一下吧。添加成功。嗯,这玩意儿接收的是什么,我看一下啊,它返回的是布尔类型是吧。那估计他返回的是成功和失败是吧,咱把它接触下来吧。Flag,如果为秋,请添加成功,否则添加失败。好,就这样吧。我们来试一下啊,把它停掉。咱们再来重启一下。
27:00
我看一下啊,这个夹包在不在里面,夹包可能不在里面啊,就是我们的驱动包。零七这个吗,是不是library没加进来啊,点一下加号,点一下library把它把它加进来啊。我说个小细节,现在我已经加进来了。我已经加进来了啊,这边还报一点小错误是吧,现在我已经加进来了,加进来之后同学们加进来之后请你要去更新一下这里面的artifect。把这玩意先删掉啊。这玩意把它删掉。好,我们点它注意看啊,点它点project structure,我们找到r defect。这玩意就有问题了,他这边包了一个problems。他说的是啥呢,同学们?他说你这个部署包啊。是你之前写的,之前接这个部署包已经存在了。你这个library是你后来才往里面加的。因此你这个部署包里面没有这个library。他问你要不要把这个library加到这个部署包里面,要不要加?
28:00
肯定要的嘛,人家点fix,然后点爱的。行吧,同学们点它就可以了。啊,这是一种解决方法,第二种回到rift里面,把这玩意儿删掉。重新新增一个吗。请问你现在是不是拉已经加进来了。我加完W之后,我再重新再去新增一个rif是不是也可以啊,就是它点击OK,其他都不变,点击应用一样的。行吗?同学们,然后再来启动就没问题了。啊,看一下这边应该没问题啊,这边都是没问题的。我们启动一下啊,看一下。坚持一下啊,讲完这个大家再休息。没问题啊。再来看一下,哎,咱们这个地址没改是吧,下次一会把它改掉啊。
29:01
APPLE5块50 OK,我先看一下数据库,数据库里面有没有。稍等一下啊。数据库,嗯。数据库。叫亚。就是他。输入DB打开打开。APP好像没有是吧,没有那行吧,咱们加一个。点击添加。添加完了,我们先看控制台有没有报错,哎,他没报错,答答一个添加成功是吧,这是个好的兆头,咱们再来刷新一下。刷新是不是就进来了。啊,这样数据就进来了,就这样子。我们回到这图。20秒快速回顾一下。第一步,我们首先请求ad点没有。那么负极的给我们一个响应,我们就能看到这个表单了。
30:01
看到这个表单之后,我们输入数据,点击添加。一点击添加,这些数据就发给服务器了。发给服务器,我们写的action等于AB,我们写的method等于post。好,那么我们服务器一个组件叫ADD,这个ADD我们在web.X文件当中把它和ADD对应是吧,同学们对应起来,所以我们就经过三个步骤,第一步获取。第二步,调用方法第三步,打印。是吧,同学们,只不过我们这边best写的是post,因此我们需要去重写,重写do post方法。猜一下呗,如果method等于get呢?重接啥方法?哎,他估计有个读get的方法是吧,同学们,确实是的,如果我们是get的方式发送的,那么我们就重写读get的方法。那关于这个里面的很多的技术细节,咱们会慢慢介绍,大家先不着急。
31:00
啊,会慢慢给大家介绍的斯,它里面的规范怎么去做配置啊,生命周期啊,它里面有多少个方法呀,他们的继承关系是什么样的呀,先不着急,大家先按照我的要求,先把这个功能先实现出来,行吗?同学们。
我来说两句