00:00
啊呃,我们把昨天讲的内容呢,给大家再来回顾一下啊,我们一起来啊跟着我哈,我们把这个东西呢再来回顾一下啊呃,那么昨天呢,我们是从呃重地上啊这个基础上来开始给大家去说的,呃,那么在重钉上这个基础上呢,我们是围绕着一个什么业务呢?就是围绕着这个登录成功以后啊,就登录失败,然后呢,我想再回到这个登录页面啊,然后呢,我们基本上给大家写了这个好几种处理方法啊,第一种处理方法的话,就是直接把整个这个登录页面呢,再给他写回去。是吧,就是我们需要在这个solid中呢,把这个所有的登录页面啊拼成一个字符串,然后呢,通过流的方式呢,再把它写回去,这是一种方式,然后这种方式说完以后呢,我们说这种方式不好,对吧,因为呢啊,就是我们第一个这个东西太太繁琐了,然后呢,做起来没有任何技术含量,还特别浪费时间,所以说呢,我们就给大家引入了一个叫做重立上这样的一个概念,我们可以啊让浏览器主动的再去请求一次我们的登录页面,对吧,就是我们这个重立上的一个原理,就相当于我这个服务器端呢,给这个浏览器端发送回去一个302的状态码,这个大家一定要记住了,明白吧,就是他给浏览器一个302的状态码,那么这个浏览器呢,它就会无条件的朝着什么呀,你给我的那个地址呢,重新发起这个请求啊,这都是他们提前已经约定好了的,就是HTTP协议里面已经约定好的东西,那么我们通过这个重力算呢,就可以啊让他啊再去请求。
01:38
到我们的这个登录页面中,但是你这么做的话呢,我们就有一个问题,就是那个错误信息我们是提示不了了,对吧?啊,错误信息我们没办法提示了,因此呢,我们又给大家去讲了另外一种技术,就是我们的转发,但是呢,说转发的话呢,我们就必须要去借助一个JSP这样的一个页面。还记得吧啊,为什么要借助于这个JSP呢?因为我们想在这个页面中的动态的去显示一些东西,那么如果你要提到这个动态,那么你肯定就要去去做一些什么业务的一些什么啊,简单的一些什么判断是吧,或者说呢,做一些什么数据的一些动态的显示,那么这样的话呢,我们就必须要使用这个JSP这个页面。
02:20
啊,这个东西呢,我再给大家强调一下,我们可以把它叫成一个页面对吧,然后呢,一般人呢,也会这么去叫,但是呢,它是一个实实在在的服务器端的一个技术,能明白这个意思吧?啊,它是运行到我们这个tomcat里面的,就是运行到我们这个服务器端的,而我们像这个HTML它也叫做页面,但是这个页面呢,是由我们的浏览器来给你解析的。能听懂这个意思吧,啊,说的这个大家一定要把它区分清楚了,OK啊,那么这个GSP页面的话呢,我们要知道的就是它怎么去写,其实这个特别简单啊,像我跟大家去说过的,像那个JSP的声明,或者那个什么do tapb那一个东西,我们就直接让以这个工具帮我们生成就行了,大家不用去写它。
03:06
能明白吧,那么剩下的东西东西不就是我们讲过的HTMLCSSJS以及我们的Java代码了吗?所以这个编写起来是特别简单的,但是呢,我们一定要知道它的一个执行原理。好,我们再来想一下,它是怎么执行的呢?首先它会把每一个JSP页面呢,先转化成一个点Java文件,还记得吧,那么在转化的时候呢,我们一定要想明白,它里面的内容是怎么转化到这个Java文件里面的,大家都记住,除了代码块,就是我们写的那个Java代码块,通过这个加括号百分号里面写的那一部分Java代码块,它是照搬过去的。理解吧,就是你是怎么写的,那我就照着给你什么,搬到那个点账号文件里面,剩下的东西,比如说像你的HTML的代码,CSS的代码,JS的代码,以及我们那个表达式,就是那个JS的表达式,就是加括号,百分号等号的那个东西,想起来了吗?诶这些东西呢,都是什么呀?通过流的方式就是R2RIGHT,我们用了一个print LN,是不是它用的是一个right,它其实都是差不多的啊,通过这个R连right给你往出写。
04:16
这样的话,就把它转化成一个点Java文件了,所以说呢,我们去看那个点Java文件的时候,大家一下就能看明白,原来他是帮我们把所有的这个HTML相关的都通通给你通过流的方式解除去,而我们那个Java代码的话呢,它就正常的去什么执行了。能理解这个意思吧,所以说呢,这个GSP页面呢,就相当于帮我们做了一件什么事呢,帮我们做了一件,就是我们一开始所做的那个事儿,什么事啊,就是我们要去拼接那个页面的那个字符串,拼的好长,那个东西能想明白了吧,哎,他就帮我们做了这样的一个事儿啊啊,那那么我们知道了这个自然P的一个执行原理以后呢,呃,其实我们还要去关心一下它里面的这个,呃,像我们用到的这个隐含对象啊,这个的话呢,当当当时呢,给大家去简单的去说了一下,我们呢,也不需要说把它一定要都记住了,对吧,你大概的知道一下它有这个隐含对象,我们把常用的几个了解了就行了,那像我们给大家去说过的这么这么几个。
05:16
再加上一个这个,你把这几个常用的了解了就可以了。啊呃,再加一个吧,叫做这个配置contract,因为这个这也是一个预对象哈,就是我们在讲这个一表达式的时候会提到它能明白了吧,啊啊啊,那么结合到这个JSP页面呢,呃,我们就可以啊,再结合上我们的一个转发这样的一个技术,我们就可以啊,既能让他回到我们的。登录页面,然后呢,又能提示出我们的这个错误信息来。啊,怎么做的呀,就是我登录请求过来了以后呢,我在我的登录的这个solid中,我去做一个处理,但是处理完成以后呢,我会得到一个结果,就是你是登录成功还是登录失败,但是这个结果对于这个so来讲,它是不擅长去处理的,所以说呢,我们就把这个结果呢,转发到了另外一个组件,就是我们的JSP页面,转发到这个页面以后呢,诶,它就可以帮我们把这个结果呢做一个具体的一个呈现,就是他比较擅长做了事啊,所以说呢,对于我们的一个登录操作来讲,最终再回到我们的登录页面,再把那个错误信息显示出来,其实我们在后台的这个so,这个他看中我们是用到了两个组件,一个是我们写好的so,一个就是我们写好的JSP页面,这个大家现在能想明白吗?嗯。
06:39
可以吧,应该啊,还是比较简单的啊,啊,那这个位置的话,我需要强调一下,就是它这个转发的时候呢,我们需要获取一个转发器啊,那么这个转发器的话就是调用一个request里面的方法,叫做get request dispat,就是获取到一个转发器了,然后在转发的时候,你一定要把你当前组件里面的,比如说当前solid中的这个request,以及这个request就是一个请求对象,一个响应对象给它要传递到下一个组件中,因为整个的转发这个阶段,它都是属于请求这个阶段,所以说呢,对于同一次请求来讲,我们必须得保证他们用的是同一个request,同一个response,那为什么这么说呢?因为我们在转发之前一般都会绑定一些数据,就是呢,我想把我当前组件里面的一部分数据呢,交给下一个组件去处理,那我怎么把这个数据给你携带过去呢?我们一般都会把它放到一个request对象中。
07:39
嗯。所以说你来想一下,假如说我在我当前的组件里面,把这个数据呢,放到这个request里面了,然后呢,我又转发到另外一个组件了,但是到达另外一个组件的时候,你用的不是同一个request。那你觉得这个功能还能实现吗?哎,这就实现不了了,所以说呢,我必须得保证,在同一次的这个转化过程中,我们用的一定是同一个request,同一个response。
08:05
能明白了吧,OK,这个大家一定要记住了啊啊啊,那么把这个说完以后呢,其实我们还可以再看一下这个重定向与转发的这个区别啊,我们简单来去总结一下。这个重递上与转发的区别呢?啊,其实大家把里面的这个几个关键的记住就行了啊,首先发送请求的次数,这个是我给大家去掌握的,重地上总共几次啊,两次转发呢,其实就一次对吧?那么能不能共享request数据呢?对于从地上来讲能吗?因为你每次请求都会有一个新的请求对象吧,它是不行的啊,那这个转发呢,哎,它是可以的啊,它是可的,因为什么呀,在一次转发的过程中,它都是属于一个请求期间的,明白了吧,OK啊呃,那么剩下的像这个浏览器的地址栏,这个大家也需要关心一下哈,呃,转发的话呢,浏览器的那个地址栏它是不会发生改变的。
09:04
啊,这个是什么意思呢?啊,就是我们在今天讲的过程中的话呢,我这个再来给大家去说一说这个哈,然后现在我先简单的给大家描述一下,比如说我现在呢,首先我发送一个login的请求,能明白吧,那么我的这个请求就叫做login,但是呢,当我到达这个后台处理完成以后呢,它这个后台呢,发生了一个转发操作,它转发到了一个JSP页面了,那么这个时候最终呢,我们在页浏览器端呢,我们是不是又回到了这个login的JSP页面啊,注意,但是呢,我们的地址栏还是这个login,它是不会发生改变的,也就意味着对于转发这个过程来讲,用户他是感知不到的,因为他是服务器内部的一个处理。理解吧,但是重递上呢,低址栏一定会发生改变,因为什么呀,因为你看了哈,我第一次呢,我发送一个login的请求,那么到达我的这个后台的服务器了,那么服务器呢,告诉这个浏览器说,诶,我给了你一个这个302,给了你一个地址,那么浏览器是不是立马就又发送了另外一次请求啊,所以说呢,他的这一次请求,那么就会把地地址栏呢,改变成你当前这次请求的那个地址了。
10:15
所以说呢,它的地址呢,是会会发生改变的,那也就意味着用户是能感知到你发生了一个重定向的操作。听明白这个意思吧,啊,就是你浏览器去做的,那么用户是能感知到的,但是服务器端去做的事,用户他是感知不到的,他也不知道你到底有没有转发过,理解了吗?啊所以这个的话呢,在这个礼拜呢,我们总共要去记住的就是前面的这三个,像下面的这个东西呢,你暂时就先不要去管了,听懂了吧?啊,暂时就先不要去管了啊OK。呃,然后呢,我们又呃用到了一个EL表达式啊,这个呢,也简单跟大家再来给大家去说一下,呃,这个EL呢,它是我们JSP的一个内置的一个表达式语言了啊,那么主要呢,就是来帮我们去取一些值,帮我们去做一些简单的判断啊,帮我们去做一些简单的运算啊这个的话呢,我们昨天在讲课过程中呢,也简单给大家去啊演示了一下啊,用起来还是比较简单的吧。
11:15
这个东西难吗?不难吧啊,用起来还是比较简单的了啊好呃,那么我们主要说一下这个ER本达式的这个取值啊,它取值呢,它要从这个四个作用力来去取。啊,要从四个作用域来去取,就是默认情况下呢,它会从这个配置scope request scope session scope,以及啊不scope从这个四个作用域来去取这个值,但是呢,我们也可以具体指定它到哪个作用域里面去取啊,就是我们在写的时候呢,就指定上什么什么什么scope点你要取的那个值。那明白了吧,这样去做啊。啊啊,那么把这些技术我们掌握了以后呢,我们就可以实现我们最终的这个,诶登录出错以后呢,去往我们这个登录页面,然后呢,把这个错误的这个提示呢,给大家显示到这儿。
12:08
明白了吧?啊,这就是我们做好的第一个功能,那么把这个功能做好以后呢,我们用在这个基础之上呢,给大家引入了一个JS这样的一个概念啊,就是一个页面的脚本语言,那么主要呢,就是来去操作我们页面里面的一些元素的啊,去帮他做出一些什么动态的一些效果啊,那比如说我们做了第一个功能呢,就是当我鼠标进来以后呢,诶把这个错误提示给我去掉。还记得吧?OK,那么这个怎么做来着呢?诶,就是获取到你当前的这个输入框,然后呢,给它添加一个什么事件对吧?绑定一个事件就是当我监听到你这个获取到焦点了啊,那我就把它后面的这个标签里面的这个元素是不是给它去掉就可以了,嗯,对吧?啊,那么这个其实就比较简单了啊,大家只要能想明白怎么去触发这个事件,然后呢,触发了以后呢,这个事件应该怎么去处理啊,其实这个GS你用起来就比较简单了。
13:05
啊,那么这个的话呢,也比较简单啊,就不再多说了。呃,讲完这个JS以后呢,我们顺带着呢,又给大家去说了一个,呃,JA,那么这个呢,也是我们JS里面非常重要的一个应用啊,非常重要的一个应用,其实从昨天这个讲课的这个时间上来看,大家也能感受出来,这个我们花了很长的时间去讲解的是吧?首先呢,我们给大家去说了一下这个adjust它的这个基本的一些知识点啊,基本的一些概念,比如说诶,它是一个异步请求是吧,那什么是一个异步请求呢?啊,或者说什么是一个异步处理啊,同步处理呢,这些概念先给大家去简单的说了一下,那么说完以后呢,我们用呃具体去说了一下,呃贾里面的非常重要的一个对象,就是我们的X httv request这个对象还记得吧,那么这个对象呢,它就是专门来帮我们去完成异步请求的,它那边有一些方法啊,有一些什么方法,然后呢,还有一些什么呀,对象的一些什么属性方法的。
14:10
那呢,我们昨天已经用过了,第一个就是open对吧,打开一个连接啊,然后呢,在这个open方法里面呢,我们需要给上三个参数,第一个呢,就是请求方式,第二个呢,就是我们的诶请求地址,第三个呢,就是你指定一下你是同步还是异步。啊,然后呢,下个方法是一个散,那么就是我们发送请求了,能明白吧,哎,散就是我们发送请求,那么发送请求的话,注意这个方法,如果你是get的请求里面什么都不用写,如果你是pass请求,那么你需要把你的请求参数写到这个里面。还记得吧,OK,呃,像这个side request header,那么这个的话呢,对于盖的方式来说,它是不需要加的,但是呢,对于pass的方式来讲,我们就需要给它设置一个请求头了,那么这个请求头的话呢,啊,大家就来看这个东西就是固定的,你把这个给它加上就行了,能明白了吧?哎,其实大家注意哈,这个家伙呢,在我们的表单里面,它是有一个默认的啊,就是因为我们表单的话,我们使用这个POS提交,诶,它就有一个默认的这个值啊,到时候的话呢,我们在后面去讲那个上传操作的时候,我会来,我会给大家去讲到这个技术啊,会讲到这个东西的,现在的话,你就只要知道把它加上,我就能使用我的POS请求就可以了啊呃,然后呢,还得说一下它里面的一些属性啊,那么这个属性的话,我们昨天基本上呢,也都用过了,像这个ready state就是一个对象的一个什么状态,就是这个对象的一个状态,总共呢有五个状态。
15:45
那么我也跟大家说过,我们最关心的呢,就是第四个状态,像这个0123,其实我们也不会用的,对吧,因为你间听到,比如说诶监听到你的状态是个零,其实你也没办法做一些什么处理,我们主要的就是啊,等它状态变成四了以后呢,就代表着它请求处理完毕了,并且呢,响应也已经就绪了,我们就可以开始从这个响应里面去拿我们的数据了,明白吧,但是呢,响应回来以后啊,不一定就是你想要的那个结果,万一后台就出错了呢,他可能给你响应回来的是一些错误信息,这也是很有可能的,所以说我们就必须要再去判断一下,你的这个响应码是多少啊,200代表的就是正确,如果比200更大是吧?啊,基本上没有比200小的了哈,比200更大,比如说四零四五百啊,或者说405等等等等一些,那么它就是一个错误的,好,所以说呢,我们再去判断一下你的状态码是不是200,如。
16:45
如果是的话,那我们就可以啊,通过我们下面的诶,Response text去获取你的这个响应数据,像这个XM这种方式我们就不再去用了,因为它用的比较少,因为我们有一个Jason这样的一个技术,已经把它替换掉了啊,现在我们用的最多的其实是这个Jason啊,然后这个Jason的话呢,我们会在后面最后一章给大家去提到,明白了吧,哎,到时候会提到,因为它是很重要的,呃,你们以后应该也会用到这个东西啊,它很重要,所以说我们单独呢,把它拿出来去跟大家去说啊,啊,那这是我们的一个呃异步请求,然后呢,呃,我们会了,以后呢,大家注意,我们还可以在使用我们的JA query这个框架啊,来去发送我们的异步请求,那么我们在单独讲这个XHR这个对象的时候啊,我们要知道获取它呢,我们得去考虑浏览器的兼容性问题,然后呢,我发送请求呢,我要写出来代码呢,相对来说比较复杂的,但是我们使用的。
17:45
华瑞以后呢,诶,他帮我们解决了大部分兼容的这个问题,我们直接就去用,也不用说再去获取这个对象了,明白吧,然后呢,发送这个一封请求的话呢,他就帮我们提供了这么几个方法啊,download.get download点什么呀,像这个post以及download.adjust那么昨天我们主要用的是这个方法啊,然后这个会了以后呢,其实上面这两个就没有什么难度了,因为人家在API里面已经告诉我们这个方法就是最底层的一个实现,而get跟post这两个方法呢,就是基于我们这个jas,就是最顶层的一个简单的实现,你这个最底层的都会了,简单的这个你也一下就能看得懂,你去看一下它这个参数,每一个的意思,你就知道怎么去用了,然后呢,再结合上那个API里面,好像这个我还在呢啊,我们打开看一下,再结合上这个API里面给你的一些什么呀,示例啊,你再去把这个写出来就没有什么问题了,明白了吧啊。
18:45
所以说呢啊,有些东西的话,我就不喜欢说给你们说的特别的细啊,如果说这东西特别重要,而且呢不好理解,我一定会跟你解释一遍,再解释一遍啊,有些时候可能会说好几遍,但是有些东西它就是一个这个标准化了的,或者是有一些什么规范的东西,我就不喜欢跟你们解释的特别细,你们一定要自己有一种这个学习的状态,就自己尝试着去把这个东西学会,因为它没有什么可变性,你就不需要去考虑各种各样的情况,他就是这么写,就是固定的,像这种东西是最好学的。
19:19
能明白吧,啊,因为我不用去考虑其他的东西,对吧?小时候老师经常讲我们,你一定要学会举一反三是吧,那会儿我就在想,我这一个都学不会,我还给你反三呢,是吧?但是呢,现在大家注意了,我们标准化的东西,或者说模式化的东西是最好学的,因为它没有变速。能明白这个意思吧,啊,像这个东西,人家规定好了,我的方法就这么来用,你再变你也变不了,你就得这么去用。所以说像这种东西就特别简单对吧,那么大家呢,就应该能自己把它学会自己参考的这个API手册,把它用出来。听明白了吧,所以说你们一定要这个,呃,锻炼自己的一个什么学习状态啊,就这个学习能力,自学的这个能力,明白吧,啊,就是简单的一些,你们一定要勇于自学,明白了吧啊然后呢,呃,可能有同学想说,那我来这的目的是什么呀,我不就是想有一个好的学习环境嘛,对吧,大家注意哈,就是大部分的东西都会给你们去讲的,但是一些比较简单的,你们还得自己去学。
20:27
你不能说完全的去依靠于这个老师啊,或者是同学啊,因为等你将来工作以后呢,你们也会遇到各种各样的问题啊,那么当你们遇到问题的时候,到时候你还有同学吗?是不是你还有老师吗?对吧,哎,到时候你想想你怎么办啊,如果说你就没有一个自己解决问题的能力,哎,到时候你就不知道怎么办了,是吧,你问同事其实这个不太现实。啊,如果一个比较简单的问题他也知道,那么他可能三两句话点你一下对吧,你可以去看看什么什么资料,他这边有什么什么答案完了,他不可能给你很详细的去解释这个东西,因为每个人都有自己的工作要去忙的,明白吧,哎,都要去忙的啊。
21:14
所以说呢,大家一定要去啊,有一个什么自己学习的一个能力,或者说呢,自己解决问题的一个能力,这个你们一定要锻炼出来,听懂这个意思了吧,OK啊当然了啊,如果你要是女生,你就不用担心了,是吧?啊啊好了啊啊,那我们就是给大家这个说一点这个题外话了啊啊那这个说完以后呢,诶,其实我们昨天讲的东西呢,也就差不多了啊,剩下的像这个登录成功以后,去往这个主界面,那这个就太简单了,对吧,就是一个重订上就可以了,但是呢,重立上呢,也解决不了我们最终的一个问题,我们还有什么呀,通过这个相关的一些什么状态管理,然后呢,去实现我们最终的这样的一个效果,就是从那下呢,你仅仅是只能来到这样的一个页面,但是像这个谁谁谁登录的,像这个数据这些东西我是没办法去实现了,现在明白吧,就是接下来呢,我们就借助于我们昨天讲的cookie。
22:14
以及下面的这个三省来去完成我们最终这样的一个效果啊,来接下来我们就去做这个事儿啊。
我来说两句