00:00
其实这个A的原理啊,很好理解啊,别多想吧,啊,你看这是浏览器。这是服务器吧啊,这段是一个,原先是怎么走的呀,原先是在这有一个页面啊,然后页面有有东西吧,这里面有东西,然后变成什么无吧啊是无了啊,然后从无又变成有了,原先是这样的啊。我这样走了,来,我再画上去简单解释一下啊,怎么去理解这个有了啊,它是怎么一个过程呢?从这到这是怎么一个过程,它是UI线能发生么个请求,底层开始执行这个程序,执行完之后呢,返回,那返回的话,你想一想这个UI线程干的事是什么呢?它就是维护这个界面的。那所以必须把这个清空掉,变成空白的,然后呢,它返回之后再接收新的内容,从有这无头无,再有再到变,再变成有嘛,这样一个过程,你看中间总得有一个什么空白的过程,这个空白过程是不是大,这个时间长本都不一样。那时间长了没,如果你宽带比较高的话,那可能是空白时间比较短的是吧,如果你宽带或者是服务器端这个程序执行时间比较长的话,你想一想那这个东西是不是。
01:06
就是空白的呀,就一直是空白的啊,所以这个你得注意,所以呢,你看它是怎么做的,实际上这个图呢,就变成这个图了,你看啊,这还是浏览器这边啊,这还是服务器吧,服务器里面还是一个什么什么什么程序还是个S吗?那这边的话大家想一想,这是整个页面吧,啊整个整个浏览器是整个浏览器。浏览器呢,它现在啊,它不是用UI线程了,它不是UI线程去发了,在浏览器里面有一个内置的对象,而这个对象叫什么。做XM2HTT什么request对象,是这个对象吗?就这个对象,它其实是UI线程,还是执行UI线程的,它执行它的啊,就是UI线程呢,他把这个事交给谁了,委托给另外一个对象了,这个对象叫什么mrs request这个地方有个委托机制,委派机制。
02:00
其实是原先UI去做的事,现在他不去做了,因为这个UI线上一做的话就全部清空了,明白吧,他委派的另外一个对象,这叫委派机制啊,加法中也有委派机制,这个很重要,委派自己不做,交给别人做,因为你交给别人的话,自己是不是可以还还可以做自己的相关事情啊。你在为别人做的话,这个是吧,你猜和什么呢,他交互。明白吧,然后他呢,在执行,执行之后呢,返回,返回之后呢,他可能再把这个东西交给UI就行了,UI线程还是执行一直执行这个,只不过UI线程原先做的那些事情交给他的S-S这个快对象了,这个它可以独自的再启动一个线程,和UI线程无关了。所以我们Ajax编程其实就是以谁为核心啊,就以一个对象为核心,我们用这个对象来干什么,发送请求吧,执行来吧,来返回结束返回给他,他是不是再把这个数据接收一下啊,就是这样。所以原先是就是这样啊,UI线程直接和我们底层服务器里边这个程序直接打交道的,这样这样,那中间的话,你肯定是有变成无误,肯定无误再变有这样过程,那现在不这么做了,交为一个对象了,委派了委派的浏览器内置的一个对象啊,这个对象叫s htb request,而这个对象就可以完成页面的局部刷新,但是你要记住这个还会变成空白吗?肯定也会变成空白,但是这个空白的范围是比较小。
03:20
你想浏览器这么大,是不是这回交给另外一个对象,他刷的可能是这一个局部了,就是这这一块他肯定还是得经历过一个什么过程啊,从有变成什么无,再从无变成什么有吧,但是呢,不是全部都刷了,明白我的意思吗?这就AXAX实现就是主要做一个功能,什么功能页面局部刷新。刷就刷在一块儿,不被整体刷了。能理解吧,啊,就委派给他给做了啊,所以这个原理老师讲了半天,我都不知道你在讲什么,这是什么MX每块对象这到底是个什么东西,你得好好理解一下。不能采用这种方式了,那刚才所说的什么超链接这种方式不能这么发了啊,也不能说像你想象的执行加速代码在这执行什么document,对吧?第二咱们以前不是这么写过吗?Location。
04:09
是吧,还有写个方表达是不是这都属于什么呀。这都属于UI线程发送,现在不用了这种独特的发送方式,只是点下按钮执行JS函数,执行函数的时候创建对象,通过这个对象去发送请求,就不再用这个表单了,也不用敲链接了,这样就可以做到局部刷新了,你就相信了啊,这个对象它就是什么呀?它就是能够委派了,委派给它去做的不是UY线程了,但是你要记住,我在讲课的过程中,你这个MMRST址快的对象的底底论实间原理你知道吗?你还是不知道下面是不是调方法就行了,调这个对象的方法就行,但是你尽量理解吧,咱们这个东西呢,打开你怎么看呀,看不了。你只有一个帮助分档,你只有按照这个帮助分档,你看这有吗?诶这出这边的只有这么一个帮助分档,你打开看一看,这边有他说了这个对象。
05:02
什么对象啊,就这个对象叫XHTD为快的对象,这个。那这边你看这个对象有没有属性啊,这个对象除了这个属性之外,你看这个对象有没有方,有没有这个方法呀,事间句定有吗?有没有方法呀,有吧,你有方法有事间句柄,哎,他给这个事先句柄是干什么的?是让人注册代码的吧,你把代码注册上去是不是就执行了啊,那发生某个事情,事情之后呢,就执行了,就像这个一样啊,当然可你注册上去,当然鼠标单击的时候就执行了啊,就这意思。所以这个对象的话,你得理解一下啊,就这么点东西就可以完成交互了啊,这是MMRSD的快回向。行所了,呃,咱们接下来啊,就开始继续往下讲,咱们那个A就行了啊,讲完之后咱们在那个EUV项目用一下,就是那个叫什么那个用户代码。是否已经存在验证一下是吧,行了,咱们就继续了啊好,这边呢,这个帮助文档呢,就打开了一会呢,我肯定要看的啊行吧,这边呢,我打开Ajax啊,然后我继续了啊,这边打开aja,然后呢,我再捋捋啊,这有一个form表单,这个form表单其实我写这个主要是为了传参啊,我说的在这个例子里边,我传参数有两种方式,第一种是不传,不传参的话,我在这干什么,自己手动获取对吧?第二种方式就是说我我我我我可我可以直接把参数传进去吧,啊那怎么传呢?这是name啊,那这是它啊比说这是什么,这是name啊,不是ID。
06:33
这个是name啊,不是ID,跟ID没有关系啊,这个ID是不是可以删了,我没有用这个ID吧,上面是不是才用哪个ID啊,会用用行这就这样啊,保存点,点完之后发生事件,事件发生之后呢,去执行这个程序啊,这个程序开始执行,第一步创建对象啊,一共四步啊,注册回调函数啊,开启通道,但不发送请求,第四步才是发送请求了啊使用啊使用使用aja的目的啊,就是解决浏览器中的局部刷新啊,解决局部刷新不要使用UI全局啊刷新全局刷新影响客户的什么体验啊,让客户的体验干什么呢?体验更加什么连贯啊,体验更加连贯是这意思。
07:25
的目的就是这样,要使用X,要使用X啊,面向哪个对象啊,面向s mrhttt request核心对象即可啊,学习它的方法啊,它的什么其他方法,它的属性呢,还有什么事件句柄啊,啊学一学这些东西啊,你只要把它掌握了啊,它的方法,它的属性,它的事件句柄的吧,这。好,这个第一个呢,创建出来了。呃,接下来我要注册回调函数。
08:01
怎么注册呢,这边呢,我还得先讲一个东西啊,讲完之后我才能说这个啊,要不然我把它写上去,你可能不太明白了啊。来先把这个讲一讲,07U来打开,咱们这个来删掉啊,这框就建起来了,来点它,然后点右键啊,我去讲一个东西吧,嗯,关于这个。事件句柄啊注册事件句柄,注册事件句柄啊,注册事件句柄的方式。来注册事件具体的方式来我们这边呢,把它打开。呃,大家有几种方式可以注册这个事件句顶了吗?最起码你现在有一种方式吧,就是在那个标签里边写了,来咱们这写上啊来title title好,我这边呢加上。呃,注册事件句柄的方式啊,注册事件句柄的方式最起码的有两种啊,最起码有两种来,比如说呢,我在这呢,有一个呃,Button吧啊,我就画个button是大家最熟悉的啊,然后value我写上,嗯嗯,点击啊点击按钮行了,这边呢加一个什么on什么click吧,你看这种方式,这是第一种方式,来我这写上去,这是注册啊注给什么给按钮注册事件句情click on click的第一种方式啊,最常用的方式,直接在按钮的时候写吧,直接在标签中编写什么属性啊,On click属性即可吧,那这就行了。
09:50
这写上去c hello行吗?你写好这个函数有没有啊,那写一个函数吧啊,咱们函数写一下来script script,然后之后呢,我就我就继续了啊,在这边写上去function是吧,Say hello啊写上去之后我alert完事之后,我弹出个hardwork这种方式是不是肯定能执行啊按钮你点呗,一点就。
10:13
这个代码是啥意思啊,这就是注册的意思,你给这个on click的事件句柄注册一个JS代码,你注册上去,这个注册的时候它并不执行。你注册的那个瞬间它并不执行,什么时候才执行呢?就点这个事儿发生之后才执行啊,所以注册的过程跟执行的过程不一样,明白吧,现在你往上写,这是注册。注册上去,但鼠标单击的时候才会执行嘛,啊来这写上去啊,注册的过程啊,注册的过程不会执行啊,只有只有注册成功了,并且什么发生了特殊的什么事件啊事件。被注册了什么JS代码才会什么执行呢?啊,所以这个你得知道这是第一种方式,大家还有没有第二种方式啊。
11:08
嗯,还有第二种方式吗?我现在在这给一个按钮,我这样吧,我先做一下吧,这个能不能执行啊,这个应该差不多吧,你只要没写错的话,应该问题不大,来我把它打开啊,打开之后看我点了啊,你你你想现在注册上去了吗。那页面是不是都访问完了,访问完了你想一想这个是不是已经注册成功了。注册的时候不执行,当你发生特殊的事件之后才会执行,是这意思吧?啊,所以这个你得理解啊,你别说你的函数写到这完了就就就就就页面走走走走到这就执行了,这这不是啊,这是注册。注册上去啊,所以继续吧,我在这再加个按钮吧,大家再想个办法,还有没有其他办法可以说注册的,来,我把这个uncle去掉了,我不这么写了。啊。
12:00
我能通过JS代码吗?通过JS代码可以给他注册吗?来我这写上啊,嗯,给按钮啊,注册on click事件句柄啊,事件句柄的第二种方式啊,就是使用什么JS代码,怎么做呢?你最起码得给他一个按ID吧,ID给他那就比如my button吗?随便写了,完了之后呢,我在这是不是可以,你看知道我为什么把词数写到这吧。目的就是你这个页面加载完之后,我这个ID是不是才能用啊,那这时候就document点什么get吧吧,该ID吧,ID谁呀,他了,拿到之后是不是他呀,拿到之后怎么办呀,你怎么注册呀,点呗怎么点啊my garden.on click写上去function,这就是一个函数alert是吧。Hello world。
13:03
这就注册了啊注册了,但还是那句话啊,注册的时候执行吗?注册的时候不执行JS代码。明白吧,只是注册的,只是注册刚发生什么特殊事件之后,被注册的JS code啊,还会什么执行了,你就这样行了,你也可以这样写,怎么写啊,你直接把它注了啊,你还有另外一种方式,你上面不是有那个函数吗?你直接把它复制一下贴过来,贴过来之后把这个改一改,改成什么c hello。直接写C开了行不行?这个函数吗?是吧,我试试啊,看行不行,我先把这个放开,呃,这个放开之后呢,我看这个能不能执行,Hello,这个hello hellokitty吧。
14:04
随便写吧啊。注意啊,这个这个这个这个这个这个这个页面打开的时候,这个会执行吗。不会吧,这个我没看帮助文档是等号还是括号来的,我试试文件啊,不行的我再改啊,呃,刷一下,然后点一下不行是吧,还说什么。第30行对象不是词属性符号法30行,他说哪个30行这个是吧,边写边写,写成这个这个了啊这个主要是你看有的时候编写几carry啊,有的时候写这个那样都混了啊来试试吧,应该是等号是吧,等号啊等号的话,我看看这边呢,是不是去掉它加个分号,这这次怎么样啊,再试试啊看行不行,来我刷一下,刷一下之后呢,点点行了吧,就这样了啊来这个咱们不能这么写了,这怎么写得,怎么写这个这等号了,等号啊等于这个,咱试试这个啊看行不行,来还是那句话啊,大家想一想,我这页面打开的时候,它执行了。
15:09
我说你刷新刷新来刷新刷新它执行吗?不执行,但是这个代码这个这个这个注册了没有啊,是不是已经注册上去了,注册上去之后啥时候这个c hello会执行。就是你点的时候,你点它就执行了是吧,那你要注意这个事啊,这是没有括号的,你别你别加括号啊,这只是个函数名对吧?嗯啊,直接编写什么一个函数名是不是也可以啊,啊也可以这个函数名指向了什么那个函数吧,啊指向了那个函数啊这种就行,当然如果你这个函数如果不想重复使用的话,你是不是也可以直接在后面写函数啊,也可以啊多种方式。能理解吧,啊,所以这个这个应该好理解啊,这个东西来来商量,他就是说咱们一般是不是采用这种方式。对吧,但是我你要是不用这种方式,用用这种方式到第18行的时候,是不是还没有注册,但是这个square标签开始执行,执行第29行的时候,是不是就这个就给这个按钮注册上去这个。
16:12
呃,新建机顶了,注册上去了。但是你要记住啊,注册归注册,但是它不会执行,啥时候执行这个事儿发生它才会执行呢?能理解吧,所以接下来大家看一看啊,这个叫on click是什么时候执行,是鼠标单击的时候它才会执行,对吧?发生什么事件啊,鼠标单击事件行了,这个就讲完了,有的老师你讲这个干嘛来看这。第一步,是不是把这个对象创了?创完核心对象,第二步是注册回调函数,对吧?怎么注册来X request点有一个东西你打开看一下,嗯,你打开这个X看,装住文档往下走,其中呢,有一个事件句柄only one啊,只有一个吧,叫on state change吧,哎,你看呢,等于function吧,那肯定这么写吧,好,我说一下这是什么过程。
17:02
这是注册的过程对吗?以后发生什么事的时候,它这个函数会自动执行。哎,对了啊,发生ready state,发生change的时候,这个函数就会执行。那你那肯定有一个ready state嘛,所以你看这个对象其中有一个属性啊,这个对象呢,它叫你看对象,这个对象有个属性,你看属性其中有一个叫state呀,Rid的值有零有一有二有三有四,012345个状态呢啊,也是从零变成一,从一变成二,从二变成三,从三变成四,你只要发生改变的话,也就是这个函数它自动就执行了,是吧。你这叫on click吗?啥意思啊?鼠标单击吗?On ready state change啥意思啊?就是ready state的这个属性发生改变的时候,这个函数会自动执行。但是你要记住啊,这个函数。这个过程只是一个注册的过程。
18:03
你注册上,你只要这个对象的状态发生改变,这个函数将来就会自动调用了。能理解我意思吧,至于这个里边写什么,咱们先不管,先看第三步,第三步是什么,开通道吧,那我开了啊,通道怎么开,开通道的时候呢,我们看一看帮助文档看一看啊,我讲哪个属性你就记哪个就行了,不过这个文档你就留着吧啊,到时候你就看就行了,也没几个属性,也没几个方法啊,看一下啊,它其中有个方法呀,你看方法吗?那往下走,你看有个open。这个open方法这这不够详细是吧,下面有没有详细的呀,你看是吧,这是open方法呀,Open方法有这么几个参数啊,你看open X快速点什么open啊open啊,来我来讲一讲open方的参数。来,这是open方法。说一下method是什么?
19:00
URL是什么,什么asy nc是什么?还有什么username是什么啊,还有那个什么password,这是什么东西,我解释一下啊,首先第一个是请求方式。请求方法啊,请求方法当然包括什么,什么get呀啊,什么post呀是吧啊,什么put呀是吧啊put啊等等,还有什么delete啊。哎,这个东西你得知道啊,其实这个htt协议除了盖和POS的请求之外,还有其他的吗?八个呢。是不是有八个呢?那多了,其实你看这里还有什么do put的方法,咱像这边是不是有这个方法呀,你可以你可以到时候看一看啊,咱们重点掌握就是get和postose啊,行吧,这是请求方法了,下边呢,这个ul是什么呢?那这是统一资源定位符吧?啊,其实就是统一啊,资源定位符URL下面是什么?指定是支持异步。
20:10
还是支持同步啊机制。True表示支持什么异步,False表示支持什么同步。这个单词就是Ajax里面首字母哦,首字母明白吗?这个单词就是Ajax这个里边的A首字母。A就是它异步的什么javascript and。明白吧,这是异步啊,负表示异步。False表示同步,这是用户名吧,嗯,这是什么密码吧?啊用户名密码。
21:01
用户名密码,那永东老师的用户名密码什么时候用,一般用户名密码是在什么时候用啊?如果你现在访问的服务器是个FTP服务器,你想一想,FTP服务器需要用户名和密码吗?需要吧,所以那个时候就用了,所以现在咱们就删掉就行了,这个不用,咱们不用用户名密码,用这三个就行了,所以现在我就写了啊,来什么方式啊,大小写无所谓啊,往下走第二个位置和第三个位置,第三个位置一般都写成竖啊,支持异步旗止。这个异步指的是什么呀?前端和后台。啊,前端和后台这个异步台先写成竖吧,啊这个东西不好讲,现在现在先别说它啊,先写成数吧,啊咱们数的话就表示什么支持异步啊,支持异异步就是谁也不等谁对吧,谁也不等谁,关键是AB和BAAB不等bab不等AAB各自执行各自的,这叫异步啊A如果和B发生之间相互等待了,这叫同步编程机制。
22:06
一般呢,我们不用同步啊,现在的话呢,A和B呢,映射到我们这个成句中,到底是什么,你先不用管啊,现在你先写成数吧,这块怎么写,这是一个H前面啊,这个项目是部署在哪的。是部署在这个下面的,所以咱们要不要加项目名。路径怎么写斜杠吧,以前怎么写的,是不是P啊,是不是端口号啊,外个APP内吧,是往后跟就行了,那现在写什么就行了,怎么写这能省不能。可以杠开始吧,加不加下名加啊,那这边写上加serve that叫take什么your code吧,行不行啊,不是your code,是your nameme是吧,Your nameme啊,来叫check your nameme,这个时候等号后面加什么就行了。
23:00
问号啊u name等于什么?上面有了,是不是得把用户名传进去啊,这个大家熟悉吧,这个这是什么请求概请求是不是问号吗?是不是name和value吗?啊,这就发过去,这打开了啊,哎,再想这个没有发啊,这只是打开通道,但并不发送请求,这个时候发送请求。第一步,创对象,第二步,注册回调函数。第三步,打开通道第四步,发送请求,怎么发你得看方法了。其中啊,有一个方法啊。我说一下啊,这个东西我不讲呢,我要是不讲,我也希望大家能够自己做出来,为什么?因为假如说你在公司里面遇到一个新的技术,还是那句话,你需要一个什么呢?需要一个很快的适应环境的一个能力。明白吧,所以呢,有些东西不可能说咱四个月讲都讲了,那以后还有新技术了是吧,你得有一种能力,就是自学能力,这个东西你不一定非得干什么,挨着拍,从第一个字母挨着拍看到尾,没必要,因为你现在的任务是什么。
24:07
就是要一个结果吧,你就是要个结果呀,那你从网上搜一些成品吧,那你就粘过来呗,运行一下,实在不行你再改一改呗,是吧,所以有些东西呢,你看你怎么去很快的进入到这个学习的环境啊,你不用先管他这个对象到底什么属性啊,这个对象什么方法呀,现在呢,你就看一看啊,你看这些名字,比如说你开启了open,你发送请求,那肯定是send了,那这个时候你看一看这个send方法,它里边body那就拆的差不多了,这个body它肯定是请求体了。由于现在是钙的请求,请求体里面有东西吗?没有,所以X request直接就是什么,直接叫什么就行了,Request算吧,这就行了,这个里边就不写了。所以这就完了。但是你看一看,重点要研究第二步,这个函数是不是很重要。对吧,你发送请求,我问你这个对象的状态发生改变吗?在整个请求过程中,BS在通信的时候。
25:07
你这个对象在调方法啊,调方法又调正的,最后呢,你想一想,浏览器向服务器发,服务器接到之后,服务器再返回,返回开始返回跟结束返回都会影响到这个对象的状态了,你看你看啊,你看这个对象。你看这对象往上走,你看这对象啊,往上走来这边你看什么时候这个对象状态是零啊,这个对象叫require对象,这个对象有一个属性叫ready state,而ready state它的值呢有好几个,什么时候等于零呢?你看说这个对这个这个这个对象已经已经创建。或者以被什么报的方法重置,这个不用管说这个对象反正已经创建,刚刚拗出来的时候,它的状态是几啊,它这个属性的状态是几啊,零吧,什么时候这个这个这个这个这个属性值会变成一啊,就是这个对象如果调用哪个方法呀,Open方法呢?来什么时候这个对象的编号会变成二啊,这个这个这个对象的属性,这个ready state这个属性会变成二啊,那就是当你这个方法掉的时候吧。
26:07
啊,再往下你什么时候变成三呀,就是所有的响应投入已经接收到,响应体开始接收尚未结束啊。就是说你现在是不是就相当于B和S通信,然后呢,如果这个通道咔咔一打开,打开通道就变成一开始发呢,就变成几啊,二开始往回接的话就变成几啊三接收完就变成几啊四那就是01234呗,你研究一下不就完了吗?所以这个时候你就你想一想,什么时候你才会做一些操作呀,那这个时候你就肯定会想对吧?啊,判断一下什么什么东西啊,If什么时候我们才会执行这个if语句啊,这个括号里面东西只有访问级数等于几的时候啊是吧?所以X request点什么点什么你就看就行了,这不是有一个ready state嘛,所以这个时候你尽量复制粘贴过来啊,它要等于等于四的时候,这说明啥?
27:04
这说明是不是接收完了,接收完毕啊,接收接收服务器响应完毕啊,但是我问你啊,响应完毕有没有可能会报404啊,有没有可能会响应500,有没有可能会响应405。都有可能吧,所以这时候你再看啊,这边还有一个属性啊,这个属性叫叫status。其实由服务器返回到HTD状态,状态码200表成功,404表找不到是吧?所以这个时候你就判断啊,If怎么着啊,你就在这个if大括号里边啊,往下走再写个if,你这个if是什么?X request它的哪个属性你尽量复制啊,这个最好不要写来复制一下,你给它粘过来,它要等于你等于200,那这说明什么?这说明响应正常结束吧,响应正常结束了啊,那else你是不是也可以判断一下if,如果什么就这一块呢?叫X request.standard request点。
28:15
Status等一等,那比如说404对吧,你A吧,你就弹出来呗,叫叫什么404啊杠not found吧,行了,都写上,然后再来else啊if,如果X request.status等于等于500,那这个时候你可以来个提示啊,对吧,也写上,比如说你这边写上500,然后杠啊服务器serve啊in,那error啊,服务器内部错误吗?Else怎么办呀,那你就直接alert就行了,反正是错了对吧,这个错的我就不知道是什么编号了,那就弹出来吧,怎么弹编号啊,X request.status加上去杠啊,就是未知的错误就行了,这边能不能都给它处理一下,你想一想你是不是只有这块才会。
29:08
正常详应结束,你是不是才会做一些相关处理啊,那你看,所以你看啊,Ajax变成其实难度在哪啊,难度就在于这个underriing state的change,这个函数里边写什么程序,这四步谁不会啊,你有对象你会吗?你就不会写,你会复制粘贴吗?你再往下啊,你这块了,你说你这个open方法有啥好写的,就三个参数,写个什么get,写个什么post,写个路径,再加上to,或者写个false to false,现在先不用管啊,Send的方法这就发过去了,那你发过去这个对象的状态是不是一直在改变,这个对象状态发生改变,这个这个函数是不是就会自动执行,什么时候这个一步一定会执行等于四的时候,什么时候这个正确结束,咱执行200的时候。那就大概就这么一个思路吧,这大家能理解吧,就这么去写就行了,来响应正常结束啊,正常结束呢,这块咱们现现在你想一想,是不是应该拿到一个结果。
30:05
应该获取什么服务器响应的什么结果吧,你想200是什么意思,是不是响应结束了并且正常吗?响应结束之后获取服务器响应的结果。服务器返回的数据可能是什么?服务器返回的数据可能是一叫什么用户代码可用,还有一种情况就是二,用户代码什么不可用啊,返回的结果你想一想服务器访问的结果是不是就这俩呀。是这意思吧?那这个时候假设啊,你拿到了什么,Response,你拿到这个就是这个这个服务器啊server啊response response啊text,你你你看一看这边呢,比如假如说他拿到的是这个信息。这是服务器返回的啊,这是服务器返回的假设啊,你拿到了这块的肯定得写的,你拿到之后呢,你将来是不是把这个信息放到哪啊。
31:05
你放SPA上吧,咱span不是有吗?你这不就ID吗?你拿到这个ID就就怎么写就行了,你这来设置什么span吧,设置span就行了,怎么设置来这个吧,Document点什么get element by ID吧,那这边加上去啊,来get by ID这边写上去啊,叫做什么什么这个名字是吧?拿到之后呢,就是T点有一个东西叫in,那HTML这里面写什么东西啊。那就写这个就行了,你是不是把这个放到这就可以了。是这意思吧?这就行了。当然,这个信息是不是从服务器返回的。你访问200是不是结束正常了,正常结束你是不是获取服务器响应的东西啊,服务器响应东西拿到之后干什么,放到这个span上面是不是妥了妥了。关键是这怎么拿,你看这有个东西叫什么?
32:05
Response X now response text啥意思啊?也就是服务器可以为我们响应回来两个东西,它既可以响应一个text,也可以去给我们响一个X2了,但是咱们现在响应一个文本就行了啊,所以咱们看一看,你看是不是调用我们这个属性就行了,叫什么属性了?X request的这个对象它有一个属性,就是这个属性吗?你只要叫response text,它就可以拿到服务器响应的东西,这个东西有可能是一,也有可能是二。那不管是一还是二,这个信息是什么,是动态的呀,拿到这个动态的信息之后,你给他动态的信息给它设置到这个span上就行了。所以这个程序就写完了。啊,这个很牛的啊,这个属性很牛的,这个属性它可以拿到服务器的东西,因为你200了,结束正常结束了BS架构的程序,S肯定会返回给东给B一个东西吧。
33:00
服务器肯定会响应回来一个东西,服务器响应的东西,它可能是什么可用或者是什么不可用吧,你拿到拿到之后输给一个变量,把变量再放到这儿,所以这可以改吧,怎么改,直接把它剪了,放到哪儿啊,放到这吧就行了。嗯嗯,删掉。吃完了。来这个代码读一读,能读懂吗?或者我再封装一下怎么封装点什么,直接它吧,来点它,你看这更简单了,来这就不用管了,来删掉这个,删掉这就行了。说你读吧,这啥意思啊,是不是拿到SPA,是不是把SPA拿到了,拿到SPA标记之后只要点什么就行了,In,那HTL吧。那里边显示什么信息啊,是不是从服务器里面显显应的东西显示到这啊,这就行了啊,所以重点啊,得掌握这个重点啊,重点是如何接受服务器。
34:08
响应的文本内容怎么接收啊?这个request点什么?Response text或者是request.response。As not。能理解吧,啊,这个AX写完了,我说一下啊,这个AX只需要写这么几步,接下来哪个类得写了,这个类要不要写一写。这个底层我们是Java吧,所以我们底层写哪个类啊是吗。是吧,如果是其他语言,是不是有可能是其他机制啊。咱现在是Java程序员啊,所以咱们把这个路径复制一下,那你肯定就知道该写啥了,你打开这个插面文件,打开之后呢,你在插面文件中,你就把这个路径配一下呗,啊来配一下怎么配啊,写呗,Serve light啊写serve light class,写serve name吧,再加上去这个什么s mapping啊,再加上去这个name,再加上这个路径啊来再加上去路径,加上去之后,你是不是贴过来就行啊,贴过来就行了,来这边复制一下吧,放到这来放到这这边写吧,看点北京方的点加va web.the叫check user name a大家一定要注意啊,Aja不是专门为Java语言准备的,A Jack跟Java没有关系吧。
35:42
它就凭借了一个对象叫m XT request对象和服务器进行交互,至于服务器端是什么,其他语言这都无所谓,咱们是Java程序员,所以写的是Java,所以你要记住A在和Java没有关系,往往有同学会讲啊,这这是不是,是不是就是Java里边的这个没关系啊,所以你不不要不要这个想偏了啊,所以这个东西很重要啊,来咱们从这把这个包见一见吧,那行了,这个累是不是得写一写啊,让咱把这写一写啊,来复制一下你这个类的话,你是不是符合加法语法就行,写过来就可以了。
36:20
那这边的话,咱们继承谁啊,HTPC记成它呗,你想一想,你记成它之后,你是不是应该。你是不是应该那个什么呀,在这重写一个do postose还是do盖的方法呀,哎,因为人家发的请求啊,你看清楚人家发那个请求,这个get请求吗?Do get吧,这边改成那个request啊,这个改成response,你该怎么编程还怎么编程啊,你想想这个request是不是掉一个方法,这个方法叫什么?Get吧,那parater呗,那还是parater就行了,那因为什么呢?因为你这发的是个什么东西啊,你问号后边发的是个user name嘛,一次样把那个复制一下等号左边的啊,这不能有空格啊,然后这个不能有空格啊,所以要注意这个问题这边严谨一些,一定要写对了啊,好,给你们拿过来放到这儿,返回一个腰字,内蒙这块要安说我问大家是不是应该连数据库。
37:17
是不是得连数一步啊,不连了啊,不连了写死吧行吧,如果是admin的话,行不行ain啊有点name,如果是这个我就叫什么呀,不可用吧,我就不可用啊,然后else,我就什么可用,行了我就可用啊,那不可用的话,你返回什么呀,那怎么返回就response,你是response不是有个方法吗?叫什么来这个叫这个。Response get great吧,返回什么是print write吧,Out啊好了,那么在拿这个之前,为了防止这个写这个中文乱码,Response有个方法叫set,什么contact type,写上什么text HTML叉,Set等于什么GB18030啊写上获取拿到out print打印输出复制贴过来,这边我输出一个啊,比如输出这叫什么用户代码用户姓名了,已经存在,请什么重新填写了啊,那这样的话,这个这个这个不写,不写了,就用户大数已经存在,我就给它设置一个什么字体的,这个字体我就设成红色行不行,那这个时候的话,我就设成红色吧,那加一个color吧,Color颜色是一个红色,行了,复制一下直接贴过来,如果行的话,咱们就是绿色吧,那绿色啊,说用户姓名可以使用吧,啊,用户名可以使用啊。
38:43
可以,那这就完了,我说一下啊,这个out。他往回打东西,这个东西打到哪了。打到这个属性上了,明白我的意思吧,这个属性就接到了这个X request,就像response就把谁接到了。
39:02
就把这个串给接到了,听明白了吧,对这块你记住啊,行了,那咱们就能用了,咱们试试吧,啊来归数一下,这个可能会出问题啊,咱们看一看。啊,出问题咱们就调一下,这个倒没什么关系,来aja X,咱们这边呢,就访问一下吧,这是127写上啊AX,然后回车了,我写个ABC吧,行吧,那这边我加个断点吧,行吧,我加个断点啊,我加上你加个这。看这个类会不会走,行了,嗯,试试啊来我点了啊走。嗯,你看是不是过来了,你过来之后呢,你就往下走,你看user name拿的是ABC不,拿完之后你看一看这边。是不是条件不成立了,走到这儿了,能用不?这能用啊,就结束了,结束之后这就能用了。是不这个东西还在吗?没刷页面吗?刷的是这一块啊,就这一块是刷的,来咱试试啊,这边我把断点去了删掉,OK,来继续这边in写上走。
40:14
是吧,你其他的你走就能用了,就in就不能用了,是吧,In就不能用。是吧?来,我们看一看。这个大家理解吧,这第一个程序就写完了。四步啊。来,我们来一起看一看这句话如果不写会出问题。啊。肯定会吧,这还用说吗?这肯定会出问题了,来我这边写试试啊,走,嗯。是不是有问题啊,这不行啊,那所以这边的话咱们得去了它啊,这是aja响应中的解决解决aja啊,响应中的中文乱码解决方案能理解吧,好,这个就写到这,那么继续啊,这个我看看行不行啊,这边再试试,嗯,行行行走哎,你看能用了吧,行了,可以用了啊还有一个很重要的问题啊,盖的请求有没有缓存。
41:22
有缓存吧,试试啊,我在这啊加个断点行不行。我加个断点啊,来我把浏览器关了,来我把它打开。好,这边呢,我们一起访问一下,嗯,这边我写上in吧行吧,好大家看清楚啊,是不是第一次访问没有走缓存,因为刚刚把浏览器打开,浏览器里缓存是不是没有缓存这个页面,所以就走了,走了结束了,结束了很正常了,好我问你在第二次点的时候,你觉得Java程序它还会走吗?这个Java程序还会走吗?这是钙的请求吧,一点点走了吗?没有啊,没动啊,这没有吧,这没进来加上程序,这说明说说明是不是压根就没跟服务器交互吧,你点点点点你哎什么时候会走啊,你加个音就会走了,为什么。
42:11
你加完一之后,我问大家一个问题,这个钙的请求再次发的时候,这个钙的请求这个地方的路径变了吗。因为用户名已经变成一的吧,所以是不是路径发生改变了,路径一旦发生改变,它是不是就没有这个缓存了,大家知道缓存跟路径是法定关系对吗?你如果发一个杠A路径的话,下一次再访问杠A的话,它是不是就不再和服务器浇筑了?如果,那前提是什么?前提是什么请求啊,Get请求发了个这样啊,具体说一下吧,Get请求它是有缓存机制的,发了个杠A请求,杠A第一次访问的时候肯定跟服务器交互,但是如果浏览器没有关闭的话,这个缓存页面就缓存起来了,那如果下一次再发送杠A的时候,它就不再和服务器交互了,直接从浏览器里面拿出杠A对应的什么页面,在页面上展示出来就行了,这就是缓存机制吗?是为了降低服务器的压力吗?这是get里边的post,有这个东西吗?没有,Post我说过没有缓存机制的,所以大家想我再写个me,你看看它走不走啊,来走。
43:18
哎,你看是不是过来了,这又没事了,但是我问你,你起按你你再点呢。还走吗?不走了对不对?好,所以说一般情况下,我们盖的一般都要都要我们aja边啊,一般都要解决这缓存机制的,如何解决缓存机制是不是在路径后边加一个时间戳。就行了。来watch工具打开看一看watch来记录,来这边呢,我就写上去,然后点保存,你看在这个上结束,大家看这个位置,它发送了check your name问号your name等于in什么一什么FDS是这意思吗?它发生这个哎,如果你要是能够保证这个路径每一次都是变化的。
44:03
它是不是就不走缓存了,所以你在后面加一个毫秒的。那个毫秒是不是一定是不重复的。怎么加?时间戳啊,要会加怎么加这个时间戳呢。为了啊解决get什等解决get请求中的缓存问题,加入时间戳啊,加入时间戳这个东西怎么加时间戳呢?我们加上去啊,比如说叫step time step时间戳等于new date啊,点get time就行了啊,这个一定会获取一个毫秒,然后将这个time step这个值加到这个位置上来,怎么加,我加个下划线等于一个值and,这个值怎么办?不能是死的啊,得把谁加过来啊。把time STEM加过来,放在我们的等号右边就行了,但是不是这么放啊,怎么做呀,双引号加起来,加俩加号,然后把变量放进去做字符串连接。
45:11
明白吧,嗯,这个name是是不是随便写啊,随便写吧,啊这个whether是变的吗?变的啊,我这个一般习惯了啊,就下划线了,因为几块里面是下划线啊,我就写了下划线好了,就这样,咱们接下来呢,再试一下看一看你看啊,我刷新把这个清空,这个ABC发送是不是发送了,大家看是不是后边有一个下杠下划线,什么1404什么什么一大堆吧,发过去了,那么他是不是走了,那这不结束了吗?好,我再问大家,现在这个路径我没变,我直接再点保存,它会走缓存吗?不会,你看再点的话,它是不是还是走Java程序,为什么,你好好看一看,这边你是不是发现这个变了。这个数字是不是时时刻刻都在改变?
46:00
这个路径是不是就时时刻在改变,路径一变,你是不是就不会走,不会走缓存了啊,所以这个你得会啊,这个招你得会啊,这是一个解决什么。解决get请求中的什么问题啊,缓存问题啊,一定要加上这个东西好了,这是这个知识点。嗯,接下来呢,我再讲个知识点啊,再讲一个知识点。这个响应能不能交给G做?这个输出JSP能输出吗?JSP能输出这段话吗?JSP能输出这段话吗?JSP能输出吗?同学们,这段能交给JP输出吗?可以吧,好,一起来做一下,怎么做响应,可以交给啊。呃,Out,输出可以交给JSP输出啊,怎么写?是不是把这个复制一下,还是这个吧。无非呢就变成什么了,这个是不是删掉了,这是不是删掉了,是不是跳到这地了,Response点什么或者request来request.get什么request吧,点什么forward吧,好了,把这个复制一下放到这啊这边呢,写上这个什么呢,这个我就写上那个杠吧,啊叫error.g行不行,然后呢,下边呢,我就写个什么。
47:19
Success行不行?读success啊就行了,大家一定要注意啊,这一段输出JSP是不是也可以输出JSP是不是专门做页面展示的啊,行吧,咱们一起来看一看,叫我连啊,这边我写个写个文件吧,这个文件JP啊怎么办?来这边点右键,我新建一个文件,这个文件呢,我得起名叫error.jp,然后呢,我再给它建一个文件,这个文件呢,我给它写上叫做success。点GP好了,是这个吧。Success,啊,来没错吧,这个行了啊,这个错误的话,你就给他写上呗,你想一想这句话相当于谁?
48:01
这句话就相当于我刚才写这个加法程序哪哪句话是这句话吗。是不是这个行了啊,那这边怎么写啊,这个那就写呗,写上吧,什么颜色。I红色嘛,是吧,叫用户姓名不能用吧,啊不能用来啊,或者用用姓名已经什么存在是吧?来复制一下,咱们直接复制放到这个JP里边贴过来,我说用户代码已经这个用户代码可以使用吧,啊可以使用这就行了,这边改改吧,什么颜色呀,绿色这就行了。你想一想,你这个程序执行完跳到GGP是吗。它是不是还是呀,所以你别多想啊,它还是serve,它输出的话,你想一想,我现在在这是不是有一个那个叫那个叫什么那个s request response的,它是不是可以接受啊,这不再试啊,这边呢,我加个标志吧啊标志杠杠吧啊省得区分不开,来加个杠杠,来加个杠杠,这边也加个杠杠啊杠杠杠杠好了,加完之后呢,我就在这关闭啊,关闭之后呢,我把项目再重新部署一下,点呢点呢部署OK,服务器启动,启动之后把这个打开打开关掉关掉啊来这边刷新,这边我写一下啊in来走。
49:25
嗯,行不行啊,为什么第一次比较慢。很简单,第一次段是因为底层有JB啊JB,它是不是还得翻译?是吧,它得翻译啊,所以比较慢,这个这个你就你知道就行了,你看我等半天才出来是吧,来我再来一个啊,再来。行吧,你这边你再来吧,你再来阿,你看走。不能用。是吧,你其他值就能用。啊,这就是G了啊,GB响应的。什么时候用GP啊,像这种东西有必要用JP吗?我们在这使用的Java程序是不是直接输出就行了?就一句话吧,我问你啊,如果需要展示的东西比较多的话,是不应该交换联系。
50:12
能理解吧,啊,我说的这个,那记住了啊,如果你是就一句话,那你就不用再浪费俩文件了。你现在如果你有一个你输出就行了,如果你说内容比较多,那你可以教我GP做响应,GP跳到GPGP1输出一输出这就拿到了,是一样的啊好了,那这节课呢,咱们就把这个get子呢讲了讲啊大家先休息着吧,下节课我们讲post啊。
我来说两句