00:00
好,那我们现在呢,咱们知道了该如何往请求域中共享数据之后啊,我们下面就来看一下如何往session域还有application域中共享数据,那这两这两个共享数据的方式呢,大家注意,我建议大家啊,直接来使用什么,直接来使用咱们的solve API就行,因为相比较而言呀,对吧,它并没有就是我们spring mvc中为我们所提供的方式,它并没有我们使用solve a PH这样简单,所以说我建议大家呀,直接用solve API就可以啊,好,如果大家有兴趣对吧?然后使用spring VC中的方式的话,大家可以去上网查一下,但是说实话我一般都不用啊,为什么呢?因为这个东西它用起来比较麻烦啊,用起来比较麻烦,还不如我们直接用solve API去实现啊,好,那下面呢,咱们就来看一下呗,咱们来测试一下,首先呢,咱们先把咱们的这个超链接来写一下,比如说这个咱们是往session域中共享啊好,然后咱们是。
01:00
是这个测试向哪向绘画与共享数据,叫做绘画与共享数据,好然后这个呢,那咱们就叫做apl I叫做application,然后这个是咱们测试往哪往咱们的应用域啊,叫做应用域。应用域对吧,然后来共享数据行,然后下面呢,我们就可以把这两个请求来写一下了啊来咱们找到我们当前的控制层。然后下面呢,咱们来写一个叫做it request mapping,叫做请求映射对吧?好,然后我们再把咱们这个方法来创建一下,就是string,然后这个咱们叫做test s SE s test session,好怎么写呢?很简单,大家直接在我们当前控制器方法的行参呢,直接去设置一个http session类型的对象就可以啊。或者说你也可以设置request,再通过咱们的request get session获取session对象也行,对吧,那我们肯定在这直接设置session,它更简单一些呀,对不对,好,然后再往下的话,那这不就是solve API了吗?对不对?点set attribute,然后这个咱们叫做test session scope OK吧,然后这个值咱们就叫做hello,然后逗号session行完事啊,然后最终咱们也是来跳转到我们当前的这个页面就可以啊。
02:31
好,然后呢,我们再往下,咱们是不是还有一个方法对不对,然后呢,叫做test,然后咱们要处理的请求叫做test application。然后这个也是AP application,好,然后那我们在这呢,咱们能不能直接去设置一个solve contact,大家注意啊,不行,那我们现在呢,咱们直接干嘛呢?我们直接在这,咱们来还是来获取我们的这个http session对象,然后大家都知道咱们的这个solid contest,我们是可以通过咱们其他的一些什么呢?可以通过咱们的其他的预对象来获取的,比如说你的request也能获取,你的session也能获取,所以说我们在这直接通过session.get solve contest,大家注意,这不就是我们最大的预对象吗?然后咱们set,咱们是solve contest set ortribute,然后这咱们叫做test test application scope,然后逗号在这咱们是hello a请啊。
03:42
好,那我们现在咱们的这个代码呢,就写完了,下面咱们来进行一个测试啊。好,然后呢,我们要想来测试的话,咱们是不是还得在页面里面,然后来写一个P标签,然后把咱们预对象中的数据给展示出来,对不对?好,大家看这个,比如说我们来获取咱们session域中的数据,怎么获取啊,有印象没有,大家注意啊,这个similar Le中来获取我们session域中共享的数据,咱们得加上一个session点,然后再加上我们当前咱们的共享数据的属性名叫做test,叫做test session scope。
04:22
能看懂吧,好,然后如果我们要来获取应用域中共享的数据,咱们要加上一个application点,叫做test application scope,能看懂不?这个大家注意,那下面呢,我们在这咱们再来重新部署一下,大家看每一次我们跳转到这个页面的时候,咱们能不能获取,如果能获取的话,那是不是就说明我们共享成功了,对不对,好来啊。然后我们现在咱们来刷新,然后咱们点击大家看hello session没问题啊,然后咱们点击,然后hello application没问题,那老师为什么这个hello逗号session它也在呀,因为大家要注意,咱们的session指的是一次绘画,一次绘画指的是浏览器开启到浏览器关闭的过程,对不对,浏览器开启到浏览器关闭的过程啊好,所以我们现在又没有关闭浏览器,那所以说我们当前session中共享的数据是不是一直都在,然后呢,Hello逗号application这个东西是我们应用于中共享的数据,而什么叫应用于,就是在我们当前咱们服务器运行的整个过程中,大家注意啊,这是这样的一个范围,整个应用的范围。
05:32
所以说呢,咱们的哈逗号session session中的数据,它只跟咱们的浏览器是否关闭有关,而我们当前咱们的哈逗号application这个应用域中的数据,它只跟咱们的服务器是否关闭有关。OK吧,好,这个大家看好啊,行,然后呢,那我们现在大家看我把这个地址复制一下,然后我们现在把这个给关掉,然后咱们再把浏览器给打开,然后我们现在咱们直接来进行访问,大家看这里面session的数据是不是就没有了呀,对不对?然后我们当前咱们的application里面的数据,还有为什么,因为你服务器没有关闭吗?没有关闭,那我们当前咱们所用咱们所获取到的solve contest它永远都是同一个对象,OK吧,行,然后下面呢,我们再来看,咱们来访问咱们的首页,好,然后那我们当前咱们说过绘画域中的数据是不是只跟谁有关系,只跟我们当前的浏览器是否关闭有关,跟服务器是否关闭有关吗?比如说大家看好在这咱们是不是有这两个数据啊,然后我现在我怎么办,我现在呢,我重新部署之后,大家说我们当前这个页面中谁会显示,谁又显示不出来呢。
06:46
好,我们重新部署之后,这两个数据大家说谁有谁没有。大家想一下。这个应该没有了吧。这个有没有,我浏览器关了吗?没有关,那咱们session域中的数据还有没有了。
07:04
好。没有了是吧,好,那大家注意,你不能再访问他了,你访问他的话,那大家说我们是不是又往session中。共享的数据,然后共享的数据你再跳转到这个页面,这个数据肯定是有的呀,那我们现在咱们选谁选它,咱们通过map向请求域中共享数据,上面这个你想访问谁就访问谁知道吧,然后我们点击之后大家看一下,诶,你会发现session中的数据也没了,Application中的数据也没了。那这是为什么呢?那咱们说了session中的数据它只跟谁有关系,只跟咱们当前的浏览器是否关闭有关,那我刚才我是不是进行重新部署,它相当于重启服务器,那我们的浏览器没有关呀,为什么现在session中的数据没有了呢?大家看啊,那是因为咱们的idea的问题,你需要在这个地方啊,把咱们的这一个选项给它选上,叫做pre serve serve sessions across restarts and relos。
08:05
什么意思?就是咱们的session,就是我们当前咱们这个啊,然后啊,当我们的服务器关闭之后,不清空session的问题知道不?然后下面咱们点击apply,咱们再点击,OK,好,大家看啊,然后我们现在咱们怎么做,你先重新部署,然后往我们的session域中去共享一个数据,你共享完之后,然后下面咱们再重新部署一次,你看看咱们的session跟咱们的服务器是否重启有没有关系啊好,下面咱们来刷新,然后咱们来点击上绘画域共享数据,点击之后大家看这是不是就有了,对吧?然后你点击这个,大家看这是不是应用域也有了,点击这个大家看这仨是不是都有了,然后我们现在咱们再来重新部署,大家看啊。好,我们重新部署就相当于重启了服务器,大家注意啊,然后只不过咱们是从你重启,就是从服务器层面来说重启,然后咱们的重新部署就是从咱们的工程工程的层面来说来进行了重启,知道吧,好,然后下面大家看我在这咱们再来一个刷新,大家看session是不是就有了呀,对不对,咱们这个重新部署完之后,浏览器没关,Session中的数据是不是仍然存在,所以说啊,为什么咱们刚才看到的session中的数据没有了,那是因为啥?因为我们的idea中大家要想,然后把我们当前咱们的因为session嘛。
09:31
它是存在session的,就session就我不知道大家之前有没有学过啊,咱们在学习这个session的时候呢,大家应该都讲过这个session的钝化和活化。叫做session的钝化和活化,不知道大家有没有讲过啊,钝化是什么意思,就是说我们当前的服务器关闭了,那我们当前咱们的session中的数据它会干嘛呢?它会被保存到,会被钝化到我们当前咱们的一个磁盘文件上。钝化到哪呢?钝化到我们的Tom cat里面是不是有一个work这个目录,对吧,这个work目录下面就是来存放咱们session的钝化文件的,还有我们的GSP所翻译成的solve的,知道吧,好,然后那我们那如果说我们当前的服务器又重新启动了之后,它就会把咱们的钝化文件中的这些数据重新给它加载到我们当前的session中,OK吧,所以说我们哪怕服务器关了,你的浏览器只要不关,那我们当前咱们的session就可以钝化和活化,哪怕我们的服务器关掉,那我们的session中的数据也不会消失,OK吧,行啊,这个大家注意。
10:40
行,那我们要想来实现这个钝化和活化的功能,大家注意啊,你一定得把这个东西给选上,知道吧,这是咱们的idea的一个问题,然后大家必须要把这个选项给它选上啊,好,然后除此之外呢,我们要想来实现session的动画,如果你的session里面它存的是一个什么呀?它共享的是一个实体类类型的数据,那我们就必须要干什么,将咱们的实体类来实现一个序列化的接口,比如说我们现在往筛中共享的是咱们的优对象,对吧?那如果我现在我要想让我的session中的这个U的对象来进行钝化,那它就必须得实现序列化的接口,为什么?因为咱们的钝化其实是一个序列化的过程。
11:21
OK吧,行,这个答案应该都学过啊,好,然后呢,这是我们当前往session域中共享数据和application域中共享数据,顺便呢,然后来给大家回顾一下咱们当前这两个预对象的范围啊,还有这两个预对象的一些区别,好啊。
我来说两句