00:00
好,我们继续现在啊,我又重新提出一个新的需求。什么需求呢?这个五开五,呃,在这儿呢,我们知道有一个。Session内置对象对吧?session.set attribute user power node。这个我就去掉了啊。这是。Hello,五。HELLO6 hello6里边儿呢,我是这样写的。啊,这个我想一下啊,User。Session点。
01:04
Session get attribute,有的。out.pri user。等于是吧,我现在先访问五再访问六啊。先访问这是不是已经把那个user放到了页面里边,放到那个session里边了,再放完六,这是不是就读到了。这没问题的吧。可如果是这样呢?是这种情况,大家看。我把它关掉。这样先不管我拷贝这个。
02:00
关掉了。再打开,我们大家知道我现在再打开的话,刚才那个session。那个绘画是不是结束了,对于我们来说是不是结束了?好,现在我重新访问哈六,这是不是空了?对不对,这是空了,这现在是空。什么意思呢?是空是什么意思呢?说明两点啊。第一它说明一个问题,这个user的现在是空,就是它是空,它是空就意味着什么,从这个session里面是没找到这个user的属性啊,因为你根本就没往里边放,是不是他根本就找不到了,现在的问题是什么,这个session现在空不空?我想问的是,就是这个问题,这session空不空?
03:01
他是三神,是空。然后。他调用了get attribute。那应该不是,如果30是空的话,这就应该抛出,是不是控制人异常啊。可现在没有抛,说明这个session是不是不空啊?三身不空,为什么三身不空呢?看着啊,Hello,六。把它关掉。我们现在找到HELLO6。我们看一下这个session。这个session是如何获取的?这个session是调用了page contest get session pageest get session。这个我们没用过,我们用过的是不是request get session。
04:04
那我们这样,我们打开来看一下page是谁。Page contest不就是这个contest吗?我们找到文档。嗯,找到文档。这样吧,一会儿再打开它吧。找到文档。这个吧。配叶康泰的。看着方法。有一个方法叫get。三是不是这个。The current。Value of the session object。对,这个。
05:02
Thetains the for the page contest or now。他这这什么意思呢。他这个是什么意思呢,这get。Session,它到底怎么获取的呢?要搞清楚这个问题啊,稍微有点复杂。怎么说稍微有点复杂,我们要看读这个源码,我们要读这个源码,从这给出来的这个提示并不详细啊,The current value,当前的值,当前session对象的。是不是直啊?关键问题是,如果我当前没有这个对象呢?或者说这个配件contest的get session方法和我们request的get session方法有什么关系?那我们要打开源码看,要打开源码看。
06:03
配件contact是个类啊,我们给这打开原本。推contest。是他吧?连源码,当然我们大家知道连的是tomcat服务器,它的源码是吧?OK。找谁找get session?耶,怎么回事儿?大家看。这这看一下这个page。呀,这是个抽象类,对不对,抽象类。那我们要看一下它具体的。石现泪又是谁?继承关系。
07:01
诶,这有个contest。实现类。是吧,他继承子配contest,看它里边有没有那个叫get session,这有直接return session,这return session,这个session从哪来的呢?三在这儿呢?那我们要查找这这是怎么获取到的,它直接返回这个session,这个session怎么获取的。哎呀,这个还真是刨根问底儿,还不好办,那这样我就查找。你看我这查找了CK,我向下查找和这个session相关的代码,看有没有。
08:00
哎,终于找到了。看到没?就这句话,This点等于什么?Request get session看到没?最关键的一句话已经找到了。什么意思,他调用的是。我们at request的这个get session,你注意它调用的是的get无参的概率,也就是说我们现在可以重新看它。也就是说这个get session,或者说看着他吧。Session session在这,这个get session调的就是request的午餐的get session,而request的无参的get session什么意思?在讲的时候说过。它是如果当前。
09:04
请求有其绑定的这个绘画。那么就返回当前这个绘画的对象,就当前的session这个对象,如果没有的话,我会给你新建一个,也就是说有老的用老的没老的啊。建新的。在service中给大家讲过get session方法。当它里面使用它的参数使用和的时候,它的用法。就是怎么我们什么时候选择用true,什么时候选择用false,当然我们知道用true就是相当于这个无餐的这种啊,什么时候选择用处,什么时候选择用false。当我们要往session域中存放数据的时候,我们使用的是,当我们从里边读数据的时,一般我们使用的是false。
10:07
为什么?你要存放出去。要存数据,你肯定得有30才能存呢,所以有老的我用老的往老的里边存,没老的我建一个新的,我给他存进去。而毒数据呢?我要读某一个指定参数的数据。指定属性的啊,这个玉属性。指定的一属性。我要从session里面去读这个指定的一属性,你肯定得有session嘛。你如果没三身的,没三神,你连三身都没有,你三身玉能有吗?啊,你没三身怎么办?没三神我给你建一个三身,新将创建一个身,你新创建三身里面会有这个属性吗?肯定没有。所以对这个知识啊,我们在这儿不再多说,或者这样吧。
11:05
这样我我给你写这一段注释吧。这个使用request的get session。的什么原则?原则什么?若向塞域中存放数据走使用。Get session t get session就是个无餐的对吧说。从session英语中读取数据则使用get session force。
12:10
对吧,这是它的使用原则。那我们现在这个是干嘛的,是不是要读数据的,读数据的,所以这个session。你要有session我才读,没session我根本就连读都不用读,肯定就没这个指定属性。所以这时候呢,我们选择让这个session session属性啊,看着是这样,我现在把这个内置对象。30是个内置对象是吧,我给你关闭掉。怎么关?这是六啊,看好了,这个是六,我这儿有个session。有个属性就叫session。默认是处,我现在给你写成false。
13:02
好,你看我一写false,这是不是马上报错了?先把它注释掉。把这个也注释掉,你看一下,一旦我写了30等于falses以后代码会出现什么变化,这是六啊。刷新。你看这不显示了是吧,再看它。看着啊。内置对象。哎,你看这对内置对象里边还有没有三了。是没了。对不对,你再看一下啊。我给他改成处。刷新。看好看好这儿的变化啊。
14:00
是不是有了?这就是。这有个啊,Session等于true或者false,那现在默认就是true啊,我现在给它生成false,生成false以后干嘛呢?我这这个代码。就给他这样写了。Htp session session。等于request。Request内置对象吧,点get get session,我这儿使用的是false。这儿使用的是false。然后这段的执行。我是需要有条件的,什么条件呢?如果session不等于,那诶我才执行这段。
15:06
明白吧,如果它不等于空,我才指应它。要等于空的。董云通,这段有时不执行,至于执行什么,你得根据具体的业务来说。那现在我们来访问一下,走。若它不等于闹。啊,如果不等于闹,那现在他输出了,输出输出他我看一下啊,输就说明他不等于闹了。不等于闹,他现在也没发现是吧,那30到底等于什么呢?他现在不等于闹的话,他等于什么?那咱们这样吧,在这放上一个session。看一下这个section等于什么?
16:01
嗯。或者我放这儿不管,等闹还是不等闹是吧,我这边三线都给他输出。三是等于这个,它还真不等于闹。真不等于闹。啊,这意思是什么?有老的见老的没老的?没拿到我的不见。他的意思是不是这个对不对,Request get session force是不是有老的,我用老的,没老的我也不见新的。是这个意思吧,好,既然是这个意思,这就说明那就对了啊,看着。
17:01
看看现在是不是三是闹,这就对了嘛。他是不是现在没有输出这个user啊,那如果说我现在先访问五。五。好,放进去了再访问六这次没问题了吧。对不对,这就OK了,所以这个属性是什么时候用,就是如果说你要从里面读取数据的时候。这个session。是不是要从,是不是要从这个要新建,哎,那。读数据的时候是否要新建,那么你得考虑是否把这个session这个内置对象啊给它关闭掉,当然这是属于什么编码啊,我们编写代码比较。比较细致的。
18:00
这个比较细致的啊。这个你不用它也没啥不行,但是不用它就意味着什么。系统。如果没有获取到,那系统会给你创建一个session,这样的话会占内存。会消耗内存,降低整个系统的效率。性能。OK,这是session用法。
我来说两句