00:01
咱们往下看啊,这个下边一个知识点啊,前后端。传值的这个方式啊,前后端传值的方式啊,首先咱们简单来聊一聊这个前端跟后端传值啊,好,前端后端。传至。好,咱们也简称什么呢,一般来讲啊,都叫做传参数吧,对吧,好都叫做。传参数啊,前端为后台传参数,从来没听过后台给前端提供数据叫传参数,对吧?都是前端给后端啊传参数OK吧?好,我们传递参数的这个方式啊,有种种,大家想一想都有什么方式呢?例如在你的这个URL地址栏后边。T1等于Y61,什么and k2等于Y62,是这样吧?再例如咱们提交什么呢?放表单,放表单中的元素是不是name为K,你填的值为Y6啊,对不对?或者是咱们玩的这个阿贾克斯中传递参数的方式贝塔,或者以这个接身的形式来传,或者以标准的形式来传。
01:21
总之都是为后台提供参数,是这样吗?好。以上啊都是啊,前端为后台提供参数的方式啊,好,但是不论啊你使用的是哪种。形式,为后台提供参数。咱们这个后台啊,一律使用什么呢?叫什么request。怎么怎么结合参数第2GET。Perter来参数对吧,好。
02:02
这是key啊,接手过来的是value对吧。嗯。的形式啊,来接收这个参数啊,你就记住啊,只要是键值对啊,只要是键值对,都是通过用K去取Y流,通过键去取值OK吧,好,但是还有一种特殊的形式啊。好,有一种特殊的形式是什么呢?好,咱们呢,同一个key下有什么呢。多个Y流哈,例如我们要执行这个批量删除的操作。哎,考试题啊,同学们考试题啊,这个考试题咱们怎么玩呢?那个参数怎么传呢。比如说我要删除A001A02A003,那你说URL后边应该挂这URL给你写一个吧,什么叉叉叉下面叉叉叉什么。
03:02
什么delete点度是这样吗?括号ID等于什么?A001对不对?And ID等于A02是吧?And ID等于A03,我这么写就是这么一个意思,OK吧,其实他应该把这个什么呢?发出阿贾克斯请求,把路径和参数应该分开来写,OK吧,而且更重要的是咱们执行删除操作要发出的是一个星球,OK吧,我这么写是能够让你们看到我这种传递参数的方式,OK吧,同一个key下有多个value key都叫ad,那Y流有什么呢?A01 a02和A03,对不对?那这种形式怎么去?咱们说有个ids啊,对不对,好,这应该是一个数组request get。什么?
04:00
Values,好,同样啊,是通过key来取value OK吧,行,这个就是啊,前端给后台,这个啊传递参数,那后台啊使用的是这两种方式来接收参数,没什么好说的,OK吧,好,接下来咱们重点要说的是什么呢?这个啊后台。为前端啊提供数据啊,提供数据OK吧,好,后台为前端提供数据啊,我们有几种方式啊好。我们来看一看。首先呢,咱们来一个具体的这个需求啊,比如说这个需求呢啊,咱们考试题有一道是不是这个查询这个学这个信息列表对不对啊,有同学说写这个学生,有同学写这个部门。还有同学写那叫什么来着,我看什么英雄联盟都出来了啊,这个因为这个表啊,没做具体要求对吧,比如说我们现在啊,我们现在啊。
05:07
啊,就以这个student啊学生为例,OK吧,咱们现在这个需求来一个。好,咱们来。展现啊,学生这个啊,信息列表啊,OK吧,好,那么现在啊,我从浏览器发送到服务器的这个请求啊,发送到这个服务器的这个请求,我们现在啊,暂时是以什么呢?这个传统这个请求方式为主啊,来完成咱们第一个案例啊好,我们现在先提供一个请求,大家注意看啊。我现在画的这个长的啊,我把它比作成什么呢?后台我给画个扁的呢,我给它比作成是什么呢?前端OK吧,好,我把这两个东西啊,这两个组件啊,给它分别标识一下,好来student student下面的这个叫做,比如说拿一个点do吧,行吗。
06:08
累点。好,然后这个是我们的这个目标页啊,Student模块下的index.jspok吧,好,那么大家注意啊,我们现在啊,发出了这么一个请求啊,发出了这么一个请求,这个请求啊。为什么?从这张图来看,要先经过后台呢,我直接先到这个index.jsp不行吗?哎,前端没数据啊,对不对,除非你写死,那写死数据那叫什么HTML是这样吗?那不叫GSPOK吧,所以说JSP里边都是什么,都是写活的,都是变量,OK吧,好等待着接收值呢,所以说啊,我们现在C啊,传统请求形式啊,发出这个。
07:03
请求到后台。好,这个是咱们发出传请求啊,到后台list.do OK吧,先过后台,那咱这个后台的这个职能是什么同学。后台的职能是什么?后台咱们刚才说了啊,已经分工明确了嘛,后台不就是用来取数据处理数据的嘛,对不对,后台要干嘛连接BC连数据库呀,对不对?好取得什么呢?取得学生信息。列表这应该是一个list,它这个泛型啊,应该叫一个student对不对,假设我管它叫这个s list行吧。好,那这个s list啊,大家注意啊,我们既然发出的是一个传统请求,大家注意啊,这是一个传统请求,OK吧。传统请求到后台。
08:02
OK吧,现在是传统请求,我们现在这个后台。如何把这个s list给它响应到咱们的这个目标页index.jsp上?怎么办?咱们是不是应该将什么,这是你们考试的时候,95%以上的同学都这么写的啊,将SD给它保存到。哪个同学?是不是request域啊,对不对request域。对象中是这样吗?好。哎,我们为什么要保存到request。我保存到三不行吗?但是为什么要用的是request域呢?Session域也可以啊,或者是上下文域也可以啊。我我说的上海文玉就是你们所谓的那个全局域。Application OK吧,但是以后这个东西叫做上下文OK吧,好,我一说上下文啊,脑海里面就是application OK吧,我保存到这两个预对象中也可以啊,我为什么要选择使用request预对象?
09:15
哎,因为啊,我们这个值啊,展现到这个GSP上之后啊,这个值是不是就没用了啊,没用了之后,咱们是不是应该给他及时的给他干嘛。干掉啊,这样节节省了咱们这个服务器中的这个内存,而且还增强了咱们这个数据的这个安全性,是这样吧,也就是说用完之后及时要给它清理掉,OK吧,所以说啊,我们使用这个预对象的原则永远都是什么呢?能用小的预对象就用范围小的预对象,如果不行的话再选择使用。啊,范围比较大的一个对象是这样吗?好,那么我们现在啊,既然把s list保存到这个域了啊,那么我们现在。如何把这个s list让咱们这个index.jsp取得呢?那它是不是应该是什么呢?从。
10:04
Re ET域对象中。取出谁呀?取出咱们这个s list是这样吗?然后展现这个s list这个数据,他是负责展现数据的,是这样吗?最终啊,填充好数据的这张页面才会响应回浏览器,是这样吗?好,现在最后一个问题是什么呢?我们如何。大家注意啊,如何在这做保存,在这做取得,这里边其实做的是一个什么request.setribu在这是什么request.get atribute是这样吗?只不过在页面中我们有一种最方便的方式来代替原始的request.get attribute,我们用什么EL表达式是这样吗?使用起来非常的方便,OK吗?好。
11:01
这一步转发还是重定向?是转发吗?请求转发对不对?我用处内向不行吗?哎,我用充电像行不行。有同学说可以啊,可以是可以,但是我们用的都是转发。你确定可以吗?行,今天中午先别吃饭啊,回去给我重定向一把,能不能取到request数据,好吧,他能取吗?有同学说可以是可以,但是我们不用可以都不可以啊,我告诉你啊,他说不可以的啊。
12:00
怎么在啊?不能用重定向啊。对吧,为什么呀。这个咱们来来画图。行了,好静一静了,同学们啊,好多同学说出来答案了啊,但是还是那句话啊啊,每个班老师还是以这个反应慢的同学为主啊,反应快的理解一下OK吧,保持教室安静啊好,大家注意啊,重新向为什么不行啊,来,我们先来一个这个转发啊,转发的这个例子啊好,那大家注意啊,我们现在相当于从浏览器为这个服务器发出一个请求,是这样吗?好。我们是不是访问到这个后台点do啊,对不对。这个是一个点度啊,这个student下的这个。List点度对不对?List点度数取出去,把数据保存到request对象中对不对?我们现在来分析一下HTTP这个request与对象的生命周期,它是什么时候创建的,什么时候销毁的?这道题啊,它根本就在于它的生命周期上。
13:13
这个生命周期你给我解答好了,这道题就解答完了,这个request对象是什么时候创建,当我浏览器发出这个请求到哪呢?只要到达服务器中的这个项目上能理解吧,这个request域对象啊,就给我创建出来了。就哪怕啊,哪怕你到后边那个资源那个路径给我写错了,只要你伸手伸到我的项目上了,哪怕你最后访问一个资源是404,我这个request对象其实也是创建出来的,OK吧,这个要记住啊,好,这个request对象是系统这个自动为我们创建出来的,是这样吧,Request OK吧,我们现在啊,从数据库表中把这个s list拿到了,对不对,是不是保存到了这个request预对象当中啊。
14:01
是这样吗?这保存到这里边儿了,对吧?好,我们做的是一个什么呢?转发转发到哪了,同学们是不是咱们这个目标页啊。呃,Student下的什么?这叫index j对不对?好,请求转发就相当于什么是一次服务器端的这个跳转,是这样吗?好,服务器端的跳转,好,请告诉我服务器端的这个跳转在这个JSP里边所使用的这个request是不是应该来get了?这里边是不是tribute。对吧,这里边是get attribute,这个fat attribute的request和get attribute是同一个吗?是同一个,你在张三的身上,把这个s list放到张三身上,我在下边从张三身上把这个s list取出来。毫无违和感,是这样吗?诶你看是不取出来了,因为是同一个人啊,然后最终呢,把这个页面响应回浏览器,全程来看,大家注意啊,全程来看是不是一次请求。
15:09
一次响应request预对象就创建了一个呀,对吧,那重定向为啥不行呢。处对象为啥不行了呢,哎,啊。行,这个我先擦一擦啊,同学们啊,好注意看啊,重定向表示什么?表示的是啊,你反应到利斯尔度,利尔度给我一个重定向,重定向表示的是。服务器先给我响应回来。想回来一个路径是这样吧,好,那这个路径是什么呢?是不是我重定向的路径index.gsp啊,他把index GP给我了,给了我之后我在干嘛呢?我在自动的发出一个请求,是这样吗?好,最终给我提供一个这个响应。是这样吗?好,那么咱们这个request对象是什么时候销毁的?告诉我。大家注意看啊,注意看在这儿呢啊,这个时间点在这呢,看到没,请求完毕后准备响应时,看到没,它就直接销毁了,它没了,当你在发出啊,既然是重定向,当你在自动的发出第二次请求的时候,服务器啊又会给你创建一个全新的。
16:22
Request对象,所以说你这个s list是保存在张三身上了,人家又给你创建一个李四,你当然从李四身上拿不到这个值了,所以说只要是你在request预对象身上存值,你就必须得搭配。转发还是同意向转发,这是必须的,OK吗?啊不是说他他行不他他他好不好的问题,而是他行不行的问题,OK吧,你从定向根本就拿不到这个数据啊,注意看啊,必须是转发,OK吧,行,这是我们的这个第一种这个取值方式啊好,接下来我们来看这个第二种啊,第二种呢,我们这个方式啊,跟第一种啊,我们来一个正好相反的这么一个操作啊。
17:10
好,你看啊,这回扁的是什么呢?扁的是我们的这个目标页,OK吧。
我来说两句