00:00
这打家看,那么我们看一下我们的这个serve的接口,实验类呢,它就是动态资源文件,那么它呢是被tomcad负责创建的,然后呢,在有用户来访问它的时候呢,Tomcad将根据浏览器的启用方式来调用它的do POS方法或者是do get的方法来处理请求,那么我们的do postose do get是何来处理用户的请求,又是如何把处理结果交还给浏览器呢?那么这里边我们可以观察一下,我们看到什么呢?无论是do postose还是do get,那么在其方法里边呢,都有两个参数,一个叫做request这个参数,另外一个呢,它叫什么叫HP response,实际上这两个参数呢,它恰恰用来帮助我们的do pose和督干方法呢来处理我们的请求的。所以要想知道这两个方法是怎么处理请求的,就要从这两个接口来说起了,好了,呃,那么在这里边,首先我们要说的第一个接口是谁的,我们看看啊,咱们讲义里边也有啊,这里边我们就不看讲义了,直接就写上写上我们说的四,我们说什么呢?HTPHTP啊,它叫做叫做这个接口大家看在哪呢?
01:22
Do post do get里边诶都有这个身影HP啊,它是一个接口,看到没有,好了,那么咱们去说一说这专门的事情啊,那么首先呢,呃,第一件事情呢,咱们就是做一个相关的这个介绍啊,看一下啊,说在这里边说我们的这个htp serve这个这个接口。那么它呢,首先呢,来自于什么呢?来自于我们的这个SR这个规范作用啊,来自做范作用,那么它呢,说在于哪里呢?呃,在我们的这个tomcat中,我们看一下啊在啊在我们的这个tomcat中,那么它存在于我们说的这个叫做re这个API,这个价包作用真有啊,真有我们一起去看一下啊,那么这是它的路径加va X不就是topca给我们所提供的这个价包吗的名字吗?你看加X,然后threat,然后呢,打开它叫做HTP,再打开它里边就是我们说什么呢?HP算response啊就是这们就这们好了,这是一个接口,然后再往下看啊,这是一个接口,那么接口我们说它只是定规则的对不对,那么这个接口的实现类在哪里呢?我们看一下第二个啊说呢,Htp server。
02:50
Flat这个response这个接口,它的这个实现类呢,依然是由我们的HTP这个服务器来负责提供,那么我们的toca呢,把这个接口的引力呢,也封装到了这个什么呢,API包里边来。
03:09
至于说这个接口实现类,它到底叫什么名字,我们并不需要知道啊,并不需要知道这里边好了,那么这个接口有什么用呢?我们往下看一下第三个问题啊,说我们的这个htp serve这个接口,那么它呢,主要的任务是什么呢?就是负责将我们的这个do get这个方法,或者是这个do pose这个方法,他们的这个什么呢?他们的执行结果来干嘛呢?来写入到我们的想体中去,交给谁啊,交给我们的浏览器,诶,大家请看啊。那么当用户访问一个sirr的时候呢,那么要be的do get方法或者是do促方法,那么在这个方法运行完毕之后呢,它一定会有一个执行结果,那么这个执行结果呢,我们说呢,它是需要干嘛呢?它是需要被写入到我们的显体中的,那么磁来八本写进去呢,就是我们说的这个接口htp response啊在这他负责把我们的处理方法的结果写到什么呢?写到我们的响应题里来,交给浏览器好了,那么往下看一下。
04:34
第四个,那么我们怎么称呼这个对象呢?Htp service POS比较长,所以我们中国成员呢,习惯于把一些名字比较长的这个类型,他修变成一个什么别名,就在这里边,我们的这个开发人员,开发人员他们习惯于将htp serve这个response,将这个接口呢,所修饰的对象,把它称为什么呢?把它称为我们说的叫做响应对象啊,把它叫做响应对象,叫做响应对象。
05:13
啊,你看,所以说回到程序中,我们看啊,在这个作中。这是不是一个由htp response所修饰对象呢?Response,那我们怎么叫它呢?响应对象为什么会起这个名字呢?因为我们说呀,HP所responses呢,它有能力将相关信息写入到响应包中,因为它能操作响应包,所以我们把它叫做响应对象。好了,那么再往下看第二个,那么在这里边我们说什么呢?说说这个响应对象它的一个主要的功能啊,它主要的功能有哪几个,那么这里边我们看看啊,首先呢,它的主要功能,这里边有一个说第一个功能,那么第一个功能是什么呢?那么在这里边呢,它的功能是什么呢?就是将啊,将我们的执行结果,诶,那么以什么呢?以二进制的形式来把它写入,写入到哪里去呢?写入到我们的显应体中,这是它的第一个功能啊,这是第一个功能,好了,那么接下来。
06:20
它有第二功能,那么第二功能是什么呢?那么在这里边呢,它呢,可以去设置,可以设置什么呢?设置我们响应头,响应头中的这个什么呢?这个叫做contact这个属性的值啊,它可以设置响应头里边contact这个属性值,那么从而来控制控制我们的浏览器去使用,使用我们说对应的这个编译器,那么将我们显示器,将我们想要体中的这个二进制的这个数据,把它干嘛呢?把它编译,编译为编译为我们说的这个什么呢?文字呀,图片呐啊,图片呐,视频呐,以及相关的小命令来进行处理好了,然后第三个任务,那么在这里边呢,我们看一下它呢,可以去设置,可以设置我们响应头中的一个属性,它叫什么属性呢?它叫做漏。
07:20
这个属性啊,它可以设置想象通的location属性啊,然后干嘛呢?那么在这里边呢,呃,它呢,可以将将一个请求地址赋值,赋值给谁呢?将一个请求地址呢,把它复制给我们的location,从而来干嘛呢?那么从而来控制控制我们的浏览器,那么向指定的这个服务器去发送请求。那么这是我们说啊,响应对象里边的三个功能可以看到啊,那么响应对象功能这三个功能几乎都是跟响应包相关相应的,正是因为我响应对象它有能力对响应包来写入数据,所以我们把这个对象xp response所修饰对象叫做想对象好了,那么这是关于这个什么呢?AP接口的介绍啊,这里边,那么先来写上具体的这个。
08:20
实现先看第一个啊,将这个执行结果以二进制的形式写到显示体中,好了,那么咱们去来一个啊,来一个。那在这边怎么办呢?再来一个网站,每一个网站里边都是一个知识点啊,我们看一下不从好了,然后现在呢,我们去新建啊,新建一个网站出来,然后在这里边呢,写上什么呢?Web APP,下一步给这个网站起个名字,那我们写上什么呢?零四啊零四说说什么呢?关于这个STP server light,它叫做pass,它的一个相关的介绍好了,保存一下,那么保存完了之后呢,那么我们就开始做一下了,首先我在src下面创建出第一个是先写这个类的名称,它呢就叫做yad,然后写包名com.BG啊power node点咱们写上controller好了,小勾勾抹掉。
09:22
然后在这里边呢,指定这个serve,它呢对外的别名就是好了。写好之后呢,进去,那么进去之后呢,比如说我们这个完它只接收get的请求,所以就重写do盖就够了,那么这个do呢,可以抹掉它暂时不用行了,那么在这个度调的方法里边,我呀声明一个变量,比如说写上一个T,然后呢,这里边写上什么呢?写上ret result,然后在这里边我们写个内容说什么呢?Hello word hello word,那么这个编里的内容是什么呢?它在这啥半是什么呢?半生的执行的结果啊,这个执行结果,那么这个执行结果呢,它是不是需要干嘛呢?需要去被写到显应体中交给浏览器啊,就怎么办呢?就得用这个显象对象,那么在这里边这个显象对象的名字叫做response,当然可以改,可以随便写啊,可以随便写,那么此时问题来了,怎么才能通过响应对象把这个结果写到响应体中呢?我们还是看这个图啊。
10:31
如果呢,浏览器它现在向我们的tomcat索要的是一个静态文件,那么这个静态文件的内容或里边的命令也是被也是会被干嘛呢,写到显象体中的。它是怎么被写进去的呢?实际上我们的comca,我们CA里边呢,它实际上是有一个输出流啊,它有一个输出流,它可以利用输出流把我们文件中的内容和文件中的命令以二进制的形式写到显示器中,那么换句话说,如果我们能够拿到这个输出流,我们如果能拿到输出流,那么是不是也能把这个内容写到想体中呢?是的。
11:16
那我怎么办呢?我们看看啊,在这咱们写上啊,说在这里边刚才啊说通过我们的这个响应对象,通过这个响应对象将我们的结果哎,写入到我们的响应体中,好了,这块呢,写上个start,然后这块写上and,别慌,没几步,就两个步骤啊,那么怎么做呢?首先看第一步啊。说在这里边第一件事情干嘛呢?说我们呀,要通过这个响应对象,要通过响应对象,那么像像我们的这个tomcat去干嘛呢?去索要,索要这个叔字流,这就好比是什么呢?孙悟空啊,到东海龙宫去借什么,借金箍棒啊,借这个金箍棒只有响应对象呢,有这个面子,那从tomca里边借助这个数据流,那么怎么去写这个命令呢?那我们写上啊,它不叫response呢,那这面就写上res response,第二写上什么呢?Get write,那么这个方法就是向tomcat去借这个输出流,好了,那我们写成什么呢?写成一个叫做R对象来接收这个输出流,那么这个输出流是什么类型呢?我们看一下,它是print writer类型啊,类型啊,咱们写上叫print writer好了,棒子到手。
12:44
然后进来第二步,回来第二步,第二步干嘛呢?在这里边我们要通过这个输出流,哎,那么将我们的执行的结果,那么以二进制的这个形式来写入,写入到我们的显示体中好了,那么此时怎么办呢?哎,你就写上了,它叫做out,它就OT out点什么呢?Right这个方法好了,你把这个值往里一放,那么此时,哎,这个变量啊,RE,那么此时这个变量动作内容呢?Hello word,它就会以二进制的形式,它就会以二进制的形式,诶干嘛呢,沿着这个管道被写入到了我们的向氧体中。
13:33
啊,讲题里边来了,好了,那么在操作完毕之后,这个输出流要不要关闭呢?不要,为什么呢?因为这不是你创建的输出流,这是你跟人家tomcat所借的输出流,所以别理他,搁这放着不用关。那么当程序走到这儿,我们看一下我们的这个do get的方法,它就执行完毕了,对吧?那么执行完毕之后怎么办呢?那么在这里边我们的这个toca它呢?就将我们的这个响应包去推送,推送给了谁呢?我们当时的浏览器,而浏览器从响应包响应体中拿到这个内容,解析之后,解析hello就能展示出来了,就这么简单。
14:15
好了,就是这么两步啊,就这么两步,那么接下来呢,咱们呀,看看啊做一下,我们现在呢,去找到这个汤太太,然后找到他跟他说一下啊,说给你一个新的项目,哪个项目呢,我们说第四个项目好了,然后在这里边呢,给网站起个别名,它呢就叫做MY好保存,然后咱们启动一下,我们这把呢,通过浏览器像toca来索要这个,看看它里边的运行结果能不能打回到我们的浏览器中。好,我们看看啊。行了,那现在呢,咱们就仿着啊,说我要找one这个资源文件,把它结果给我走。
15:05
来了吧,Hello work hello怎么来的呢?我们哈,怎么来的呢?从响应包里拿出来的,那响应包里的hello怎么来的呢?诶,是do get的方法,在执行的时候,那么借助于显应对象向康借了一个棍子,然后就利用这个棍子把我们的结果呢写到这个显应体重,然后交给大家体的好了,你看那么这是什么呀?这是我们响应对象第一个功能,哎,把方法中的结果写到我们的显应体重,大家看到没有啊,看到没有?好了,那么在这里边再往下去看,为什么要发送请求呢?你不请求他Tom是不会调用这个方法的,你不发送请求,那么toca它是不会调这个方法的,对不对啊,我们看一下服务器,像浏览器是发送的是响应,对呀,没错啊,没错啊,那么接下来我们再往下去看一下啊,在这。
16:02
那么我们再去写一个threat啊,再写它说呢,在这里边我们去新建啊,新建一个这是老二啊老二好了,To好叫都给我抹掉,然后写上什么呢?写上这个它对外的这个名啊,To set,写上斜线to。然后在这里边我们看看啊,这个to依然接收get的请求,然后在这里边啊,把它写上什么呢?写上in特moneymy等于50,诶,这是什么呢?这是我们当前的这个执行结果,好了,那么这个执行结果跟刚才的执行结构有什么区别呢?我们看一下刚才的执行结果啊,是一个英文字符串,而这一把的执行结果啊,是一个阿拉伯数字50。好了,也就是说如果现在有人来访问to th,那么two thad就给他50块钱,那么怎么办呢?首先第一步我们通过这个响应对象,通过响应对象向。com来借,借到一个输出流,好了,那咱们写上啊,Print right,我们记到这个输出流了,行了。
17:17
然后再下来呢,利用输出流通的这个RA这个方法,诶,把这个钱打进去行了,那么此时在我请求发送过来之后,我能不能在浏览器中收到这50块钱呢?那么我们现在重新启动一下啊,回来启动我们看看这个效果啊。好了,那么启动完毕之后呢,我们去通过浏览器去访问老二,然后看看呢,访问老二之后我们能得到多少,是不是50呢?好电回车,诶我们一看一个好消息加一个坏消息,好消息是什么呢?我们收到结果了,二。
18:08
货要是什么呢?因为咱知道啊,Two要给咱的是什么?是50,那么中间的那48块钱哪去了?是不是被我们的汤吃回扣了呢?诶你看这就算出问题了,那么出问题之后呢,解决呀,哎,我们看看在这儿咱们要写一写啊,各来看这啊好了,走一下啊说什么呢?先说说问题的描述啊,问题的描述咋了呢?说在这里边浏览器啊,它接收到的这个数据是什么呢?是二啊是二,那么不是50差是不八块钱对不对?好了,那这块有啥问,那这个问题它产生的原因是什么呢?我们看看问题的原因,诶我们看看啊,浏览器是从响应包的响应题里边拿到的数据对不对,他拿出来是二,那问题是问题来了,是谁把这二写进去了呢?我们看这案程序谁负责向详体写东西呢?诶就是这个输。
19:17
出流中的right这个方法,好了,那我们看看啊,R点咱们写上这个right方法,那么从这里可以看到什么呢?在输叔流通我们的right方法呀,他被重载了多次,你看这个重载方法使用跟多肽有一毛钱的关系嘛,昨天一直有同学哭着跟我喊老杨啊,重载啊是不是要体现多肽,体现个毛,这里边in特和SP之间上哪多肽去啊,啊看没看到重载跟多肽一毛钱关系都没有啊,一毛钱关系没有,那么在这里边我们right的方法呢?诶,可以把一个整数写到显象体中,可以把一个字符串写到显象体中,还可以把什么呢?一个字符写到显象体中,它总共可以把这三种类型数据写到显象体中,那有什么问题呢?诶,我们去看看啊,在这那咱们说说,呃,我们的这个out点这个right这个方法啊,Right方法。
20:17
那么这个方法它在执行时呢,它呢可以将可以将什么呢?我们的字符,然后呢,还可以将什么呢?还可以将我们说的这个字符串啊,字符串还可以将什么呢?还可以将我们说的这个ask码,Asii还可以将我们的阿斯格码来写入,写入到我们的显示器中,它具有这样的功能。好了,那么说到这有一个问题了,啥玩意儿叫阿斯克玛呀?什么叫阿斯克玛呀?诶什么是阿斯克玛?那么在计算机的世界中,我们说所有的内容呢,都是以数字形式来存储的,那么比如说我们写一个字母小A,那么小A呢,它实际上对应的是一个数字是什么数字啊,97,是97,那么这个97它就是阿斯克玛,它就是阿斯克玛。
21:15
好了,那么我们的这个RA方法呢,它可以把阿斯科码写到我们的显应体中,那么问题来了,我们刚才在浏览器中啊,看到的一个字符二,那么二在计算机世界中,它对应的阿斯克码是多少呢?二在计算机程中,它对应的阿斯格码呢?实际上就是50,所以在这里边,当这个命令在执行的时候,它并不认为你是把数字50放进去,而是把什么呢?阿斯玛50放进去,阿斯玛50对应字符92,我怎么证明这件事情呢?那么在这里边我呀把这个值换成97。那么此时我们访问to的时候呢,我们收到一个字符是多少呢?就是A,我们试一下,试一下我们重启一下,重启一下,为什么要重启呢?因为在正常情况下,我们网站内容每次发生变更的时候,我们都得去重启一次服务器,它很麻烦啊,很麻烦我们看看啊。
22:26
稍等啊好了,那么现在我们访问老二,我们访问老二向上什么呢?Two three,好了,走收到是不是A是不是A,那么看到这个证据之后证明什么呢?原来我们的right在收到一个数字的时候,会把数字当做阿格码写进去,所以写到想起的不是97小,要想题什么字符A是这个问题,哎,这是问题的原因,好了,那么怎么解决这个问题呢?诶我们帮来看一下,我们说问题啊,关于这个问题,关于问题它的这个解决方案啊,解决方案说怎么解决呢?自然呢,这个RA的方法呢,咱是不敢用了啊,不敢用了好了,那么我们找这个输出流,在输出流里边还有一个方法,它叫什么呢?它叫print方法,诶你看啊,那么print可以将整数加字符长整数单精度字符数组double string、布尔object。
23:27
也就是说我们的普用的方法呢,可以将任意类型的数据来写到我们的显示器中,那么在遇到这种数字的时候呢,它是不会把数字当做阿斯克码的,所以在实际开发过程中的时候呢,一般来说,我们都是通过print的方法来将我们的真实内容写到显示题中的,所以我们看一下写上说呢,在我们的这个实际的这个开发过程中,哎,那么我们都是能干嘛呢?都是通过通过我们说的这个叫做art.print这个方法啊,这个方法,那么将我们真实的数据来写入到我们的显示器中的,在这儿,所以在这里边呢,我们换一下二点什么呢,Print print,然后呢,这时候呢,把这个money放去好了,放好之后呢,我们还需要去重启一次淘们开好了,我们看一下。
24:27
重启一下。好了,那么启动之后呢,现在我们去访问了,二选上two thad好了,走一下电回车,我们这把是不是收到50了,是的,哎,是的,所以这是你看到的这个什么呀,这是各位同学你看到的我们当前的这个响应对象,我们当前响应对象做到第一个功能将执行结果呢,以二进制形式,想要显应体重,那说到这有同学说了,那我们什么时候用right呢?什么用print呢?那么我们说呀,没必要去考虑这个问题,你就这么想,但凡是要把结果小想起的时候,你就一水的阿点print,那么阿呢,你就这么想,没听说过啊,没听说过好了,那么这第一个功能,那么在刚才的这个功能里边呢,我们就做完它了,那么接下来我们做第二个功能,好,先把服务器关了啊,那么看第二个功能在这里边,我们在网上中写第三个threat。
25:38
新建啊,New,我们去见老三啊,第三个座写上它th re three serve好了,老陈,然后在这里边设置老三这个threat,它对外的别名斜线three,好了,我们看看啊。那么在脑三这里边啊,我们要把什么结果写到显象启中呢?我们看看啊,说呀然写上string res right了,说在这里边呢,我要写上什么呢?说我都会什么技术,说我都会点什么技术呢?说我在这里边说我会什么呢?我会Java这个技术啊,我会Java这个技术,然后我还会什么技术呢?我还会买search这个技术,我还会什么技术,HTML啊,我会这三种技术好了,那么这时候我想干嘛呢?我想让浏览器啊在窗口中分三行来展示这三个技术名,那么怎么能够让浏览器分三行来展示这个内容呢?那么自然要使用相关的命令,什么命令呢?HTML标签命令。
26:49
那么在H秒中呀,它有一个什么呢?叫做BR的这个命令什么意思啊,换成命令,哎,所以我们在这三个数据之间,哎,写上BR来实现我们说的换行命令,好在这,那大家看在这个内容里边,在我们这个执行结果里边,它既有什么呢?它既有文字信息,那么它又有什么呢?它又有我们说的HTML标签命令,是不是我们当前的这个这个反馈结执行结果里边有两部分组成HR标签命令和文字信息好了,那么现在呢,我呀,首先通过这个响应对象向to来借到一个输出流,那在这里边呢,咱然写上啊,叫做呃,Print print write,然后写O好了,然后呢,利用这个输出流宗的这个方法,2.print的方法,把这个结果以二进式写到写成体中好了,写完了,然后写完。
27:50
之后呢,我们现在呢,把我们的这个to服务器启动一下啊,启动看看效果啊。
28:04
嗯。我们一起看看效果啊,启动好了,嗯,那么在这里边呢,咱们去访问老三,说老三呀,都会啥技术呀,THR好了,发起请求,走诶我们看一下一个好消息伴随一个坏消息,好消息是我们收到了老三运行的结果,当然坏消息是什么呢?我们浏览器啊,并没有把这个BR当做一个命令来执行,而是干嘛呢,把它当做一个字符串展示出来了,出事了,出问题了,哎在这,那么咱们去看看啊,复制一下。CTRLC,然后在这里边回来啊,那么咱们CTRLV一下啊,显示它出大事了啊,问题来了,说出什么大事了呢?我们看看啊,先说说我们说这个什么,这个问题的描述啊,问题的描述说看这说我们的这个浏览器,浏览器在接收,在接收到这个响应的这个结果的时候,那么它呢,将什么呢?将我们的这个BR,那么作为什么呢?作为我们的文字内容干嘛呢?在我们的这个窗口中展示出来了,没有干嘛呢?没有将这个BR干嘛呢?当做什么呢?当做当做我们的HTML标签命令来执行,对吧?这是我们看到的一个bug,这是bug,那么这个bug的原因是什么呢?分析分析啊还。
29:47
还是这张流程图,那我们看啊,当响应包到达浏览器之后,那么我们的浏览器呢,它需要干嘛呢?它需要去根据什么呢?根据这个响应包中的一个属性,什么属性呢?就是它探帕这个属性,它要根据响应包中应头里边的content属性来干嘛呢?
30:15
哎,使用对应的编译器对二对讲体中的二级数据来进行一个编辑,对不对,好了,这件事咱们也知道啊,那么咱们写一下啊,葛来说在这里边咱们看看问题的原因啊,问题的原因说我们的这个浏览器它在接收,接收到响应包之后啊,接收到响应包之后,那么这个时候呢,它是要根据根据我们响应头,根据响应头中的这个comp t这个属性,它的值来干嘛呢?来采用采用对应的编译器啊,图片呢,文字呀,啊,采用对应的这个编译器,那么对响应体,对我们响应体中的这个二进制的内容啊,咱们写上二进制的这个内容。
31:15
来干嘛呢?来进行什么呢?进行我们的编译处理啊编译处理对不对,好了,有这么个流程吗?流程里边有这件事情吧,好,那么往下去看看啊说呢,在我们的这个默认的这个情况下,在默认情况下,那么我们的这个content type这个属性它的值是多少呢?它的值是T,是T,也就是说我们说content t然等于什么呢?等于test,好了,这个test是什么意思呢?那么此时此时我们说呢,我们的这个浏览器,它将会,它将会去采用什么呢?采用我们说的这个叫做什么呢?文本编译器,文本编译器,那么对我们向体中的二进制的数据来进行解析。
32:12
文本编译器啊,它只能把二进制解析成英文字母,中文字母,以及我们说的什么呢?中文,英文,日文、法文,它能不能把二级制解释成命令呢?文本编译器里边没有这个功能,所以此时你看对吧,请拿文本编译器去解析的时候,这些东西全是字母而不是命令的。这就是问题的原因好了,那么该怎么解决这个问题呢?我们往下去看看啊,往下看,在这咱们写上解决方案好了,我说解决方案,解决方案看好了,说呢一定啊,一定要在得到这个输出流之前,一定要在得到输出之前干嘛呢?通过我们的响应对象,那么嘛呢,对响应头,对响应头中的这个content这个它的这个属性,对这个属性来进行一次什么呢?进行一次重新的赋值,重新的这个赋值,那么用于干嘛呢?用于指定,指定什么呢?指定这个浏览器去采用,采用什么呢?正确的编译器来进行处理。
33:32
诶就可以解决,不就是这个内容的这个属性内容不对吗?那么改了它就行,那么怎么改呢?一定要在你拿到输出流之前去改,那么大家看在这段小程序中,这行命令是干嘛呢?这行命令是不是像向我们的这个Tom catt去索要,索要这个输出流对吧?索要输出流然后下一行命令干嘛用呢?下按命令说呢,通过这个输出流将这个结果写入到我们的显应体中好了,那么我们说呀,一定要在拿到这个输出流之前来设置显像头,那么这里边诶,我们看一下在这显示啊,设置什么呢?设置我们响应头中的count,看看这个属性谁来设置呢?显示对象response,那么它里边有个方法叫什么呢?叫做set call,瞧这方法名内容类型。
34:31
那么用什么编译器呢?你瞅瞅这里边是不是有文字啊,对,是不是还有我们的HT0标签命令啊,对呀,所以怎么办呢?你写上test斜线X2什么意思,告诉浏览器。使用文本编译器和HTL命令编译器对详体内容进行相关的解释,那么这个时候HTML变译器呢,就会发现,哦,这是我的命令,那么各断器执行它就行了,就是这个内容好了,那么写好之后呢,你得重启一次,因为每当你对方法中的内容再做修改之后呀,你都得重启一次,它很麻烦,那么怎么办呢?各位该怎么办这件事情呢?我教大家一个小窍门,我们看看啊,那么我们找到开关,找到开关,那么在开关里边我们看看啊,在开关里边是不是有一个serve这个选项,服务选项,那么在这里边有两个啊,看看它有两个啊,那么这两块都选择什么呢?A big class resource AB class什么意思?Class什么意思啊?就是我们的动态资源,Resource是什么意思啊?静态资源文件,它来告诉这个idea,告诉idea。
35:47
说什么呢?如果当前这个网站中动态资源文件的内容或者是静态资源的内容发生改变的时候,由idea自动的把它更新到我们的tomcat里面来自动更新,这样你在做修改的时候就不用像我这样反复启动tomcat了。好,这两个地方设置,在未来的工作中,这两个地方都要怎么设?
36:12
设好之后呢,干嘛呢,你一定要以底瓣的方式来启动,就是调试方式启动,那么这个功能才能好用,如果你以这种方式启动的话呢,刚才两个功能失效人说了,既然你这个网站已经是成品了,为什么要做更新呢?所以这边选debug启动啊,那么这时候你在做修改的时候就没有问题了啊,好启动。那么启动完了之后呢,我们通过浏览器访问老三,在访问之前按下F12键,选择network,看看这次交易记录好了,我们选择什么呢?老三,K re three访问它,走好,大家看现在返回的结果里边是不是分为三行呢?是的,那说明什么呢?BR被浏览器当做一个命令来执行的,那浏览器这把怎么知道的呢?看我们响应包,我们进到响应包里边来找谁啊,找响应头,然后往下看,No,在这,Come t是不是我们所写的这个编译器啊,文本编辑器和HTL编译器,哎,在这,那么在这里边我们看到一个功能,利用响应对象来控制什么的啊,控制我们当前的这个啊,写三个print是做不了换行的啊,写三。
37:40
碳酸坐表方向的必须去靠什么呢?H呢,标签命令在浏览器里边换行,只有一个命令BR没有其他命令了啊这里边好了,那么不着急,我们接下来往下去写一写啊,说在这里边呢,我们看看啊,那我们在这里边在此瑞宗啊,我们再去写第三个结果出来第三个结果啊。
38:03
说呢在这里边我们写上啊说呢string写上res result2说这边我们写什么呢?啊,我们写上红烧排骨啊红烧排骨诶不怕大家记住,我今晚就吃红烧排骨,不过大家记住啊,然后写上一个B,然后再来一个什么呢?呃,我说再来一个梅菜肘子,哎,这个也不怕大家记住啊,我今晚就吃这个东西啊梅菜肘子好了,然后再来一个,再来一个什么呢?呃,再来一个我们说的这个什么呢?再来一个这个糖醋利脊啊糖醋利脊哎这里边哈,看来啊这个不撒谎了,说今晚我也吃它,哎三道菜,那么这也是一个结果,对不对,那么现在呢,我呀通过这个输出流把这个结。
39:03
过也写到显体中RSRT贝塔二行了,写好之后呢,各位呢,那么写好之后你打开浏览器之后会发现什么呢?会发现这个idea这个图标上面有一道绿光,绿的小光从左到右飘过去。那么这个小绿光飘去代表什么呢?代表我们的idea把当前这个方法中的更新推给了我们的tomcad,好了,那我们打开浏览器啊,你看注意是不是一个小绿光,哎,过去了,哎,所以编程要想舒服点就得带点绿,那么现在呢,我们去访问老三好了,走一下啊,走你诶你看,那么这个时候我们看看啊,好消息和坏消息,你看啊,这是什么呢?这是红烧排骨。这是什么呢?这是梅菜,梅菜肘子,这是什么呢?糖醋利己,好消息是什么呀?这个字符串里边的BR命令被正常执行了,它分为三行,对吧?分为三行,那么坏消息是什么呢?那么变成一组问号呢?诶,我们看看啊,对于这种文字内容呢,我们的浏览器呢,它实际上要通过响应头里边的contact ta中的一个值叫做插set,插塞是什么是字符集,它要通过这个字符集来对这个文本内容来做一个解析,那么在默认情况下的时候呢,我们叉塞的值是多少呢?RSO 8859脱一,那么这是一个什么字符集啊,这是一个偏东欧语系的字符集,也就是说你靠这个翻译对亚洲地区的文字它是解释不了的。
40:50
那么我们知道啊,就有一个非常牛逼的字符,就叫什么呀,Utf-8万博马,他呢,可以对当今世界上所有国家的语言来做一个解释,所以你看这个content type里边的这个属据值是不对呀,是不是得改一改啊,那怎么改呢?得靠显应对象,我们回过来你看啊,我们找到这个显应对象,说在这里边怎么设置这个content content tap中的这个字符集呢?你看人家格式前面是编译器类型,然后一个小分号,然后写上插,对吧?所以在这里边我们也按照这个格式写分号,大家写上叉S等于什么呢?Uts杠大好了,那么这个时候浏览器呢,就会使用内置的utf杠八字直机来解释,那么它就能看清这个内容了,好打开浏览器看,这叫绿光飘过去。
41:51
诶,更新成了,那么现在我们再来一次,再发一次请求。走。是不是解析成功了,那么你看浏览器为什么能能看懂它了呢?因为在显像头里边的contact值变成了什么呀?插UTF杠看到没有,那么这个呢,是响应头里边的第二配,这是响应对象的第二功能,来设置应头中的contact ta这个值来控制浏览器采用对应的编译器来进行编辑,来使用对应字符集对文字内容做解析处理,看到没有啊,看见没有啊啊啊对痛风啊对对对,我痛风,我忘了我痛风这些东西同学们我今天晚上都吃不上了,我今晚上吃的实际上是什么呢?是稀饭就咸菜啊,所以这些同学啊,这个痛风啊痛风这事儿呢,得得注意啊,我就是看一看,我就是看看,我就是过过嘴瘾啊呸,我也就是对过过过过嘴瘾啊,不敢吃了啊,不敢吃了啊啊。
42:57
好了,那么接下来我们再往下看看啊,我们看看下一个什么的,下一功能说我们的这个响应对象还能干点啥呢?那么在这里边它呀,还可以对响应头中的location属性来赋值,那么通过赋值呢,可以把一个请求地址写入到location中,那么在这个响应包到达浏览器之后呢,那么浏览器它将它将会自动的根据location地址来发送请求,诶看这儿,那么这事怎么整呢?诶帮咱去看一下,我们重新做一下。
43:34
回到我们的这个网站中,我们去写第四个thad,在这好了,我们给它起个名字吧,Forad,哎,For threatad好了,保存,然后在这里边这个threatad它对外的别名,对外别名叫什么呢?老四啊,写上for,行了,我们看看啊,那么在这里边,在for所里边,再其do get方法中,我们写一个结果,哎,看好了啊,过来写个结果,刚然写着啊,去re,比一个简单的字符串。
44:14
HTTP,然后选什么呢?3W点百度点com,诶那么咱们看这玩意儿是什么呢?是一个字符串不假啊,是一个字串不假,但是呢,它也是一个地址呀,诶也是一个地址,那么我们想干嘛呢?我们想浏览器啊,收到这个响应包之后,能够向百度去发送请求,实际上在这里边儿呢,我们是要通过服务端来控制浏览器的请求行为的,我也给大家讲过啊,浏览器的请求行为呢,既可以由前端工程师来负责,也可以由服务端的工程师来负责,那么我们服务端公司怎么能控制浏览些请求行为呢?诶在这儿就体现到了。那么在这里边我们看怎么办呢?一件事情说我们只需要去通过这个响应对象,那么将这个地址呢,赋值,赋值给谁呢?赋值给我们响应头中的location这个属性啊即可,那我们写啥?那写上说呢,Res response,第二调用方法,它叫什么呢?叫做send redire,然后在这里边呢,把这个结果放进去,放进去了,那么此时在我们的这个响应头里边啊啊啊,我们看一下啊,在我们说的这个显像头里边啊,在我们当前相应头中配。
45:45
体的在小头里边,那么我们会出现一个叫location的属性,而这个属性里边的G是什么呢?STP3W点百度点com哎,在这。那么当浏览器大家注意啊,在这里边我们看啊先生啊说呢,我们的这个浏览器他在接收,接收到这个响应包之后,那么如果干嘛呢?如果发现我们响应头,响应头中存在了location这个属性,Location这个属性在这里边啊,如果存在了我们说的这个location的这个属性,那么在这里边它将自动的自动的通过什么呢?通过这个地址栏,通过这个地址栏,那么像什么呢?向location中所指定的所指定的这个网站去发送请求,诶发送请求好了,然后在这里边儿呢,我们说呢,通过这个send redirect这个方法,利用这个方法呢,实际上就可以远程的来控制览。
46:59
器他的这个请求的行为,那么请求的行为里边有几要素呢?有三要素什么呢?请求地址,然后请求方式以及什么请求参数,哎,就可以控制住啊,可以控制住好了,那么再来我们一吸啊好在这里边启动我们的这个服务啊,启动它。
47:27
我们看看效果嘞啊。好,别眨眼睛,不要眨眼睛啊,我们防老四你看啊。写上for th好了点,回车发起球啊看着啊走。诶,变了,看看呢变了,浏览器在收到响应包之后向百度发起了请求,看到没有,那没看到同学,再来一遍啊,再来一遍,我们先去访问老四,然后呢,浏览器收到了老四这边返回的响应包,然后咚访问百度去了,看到没有?那么这时候都发生了什么事情呢?来跟我走,你看啊,这是浏览器啊发送的第一次请求,访问for SR,那么针对这次请求呢,我们的副端打回了一个响应包,那么其中在响应包的响头里边有了一个叫做location的属性,看到没有?那么这里边出现了一个地址,那么当浏览器发现响应包里边有location之后呢,它会自动的通过这个地址栏,通过地址栏向指定的这个网站发起了请求,那么这里边我们是不是控制住了浏览器的请求地址啊?
48:40
那么此时浏览器是以什么方式来发送请求呢?我们之前给大家讲过,但凡浏览器啊是通过地址栏发的请求,其使用方式一定是钙。所以我们看看。当浏览器向百度发起请求时,其请用方式是什么呢?是get,是get,哎在这,那么至于说请求参数呢,也能控制住,那在这里边你看一下,如果你想告诉浏览器像百度发请求带点参怎么办呢?你写个小问号就得了呗,写上我说的userna等于ma写一下好,打开浏览器,等着绿光飘过啊,等着绿光快表看纸啊,打开它看绿光,诶,飘过了,那么现在我们再访问一下是吧,说这个访问老四啊,咱们看看啊,在这儿访问老四。
49:31
走。诶,你看是不是连浏览器它的启用参数也在我们手上握着的,也手握着,所以浏览器的启用方式呢,它其实可以由前端来控制,可以由前端来控制,也可以由服务端控制,服务端怎么控制呢?远程控制通过设置响应头来控制浏览器的请求地址,请求方式以及请求时所需的参数,在这好了这东西那么在这里边我们看一看啊。
50:01
那么在这里边儿呢,我们看看,呃,先说到这儿先。
我来说两句