04月05日 小阴 一般般
今天还是web相关知识点,session,cookie,servletContext及相关的API。课后小C破天荒来请教我,而小胖居然吃醋了,哈哈。
小C:叶子哥,刀哥说的request,session,servletContext3个作用域对象,不是很理解,你能跟我梳理一下么?
那一瞬间,从右手边迸发出凌冽的杀意,来者不善。只见小胖"饿狠狠"看着我,一副恶犬护食的态势。嘿嘿,小样~
我:具体哪里不理解呢?问之前一定要有自己的理解,要不这就得有个很大的回答范围。
小C:我也不知道,感觉记住了几个名词,然后是啥就不知道啦。
我:那不就是从0来么。
小C:哦,差不多吧。
我:好吧,跟你说下我是如何从0开始学一个新知识点。以刚刚问题为例子,我们都知道request, session, servletContext都是作用域对象,用于数据共享。好,到这,如果仅仅理解这个概念,那么"是什么"我们根本没做到位,说句不好听的,你仅仅是记住3个名词。这里你需要围绕这3个概念尝试去思考:1>为什么需要进行数据共享 2>为什要有3个数据共享对象 3>怎么进行数据共享。4>开发中有啥用。通过这些思考,你会发现数据共享这个知识点就立体化了,思路由一个点,拓展成4个点,路走宽了。接下来我们围绕着这4个点一一展开:
1>为什么要进行数据共享
如果从A页面跳到B页面,如果需要带上a数据怎么办?
一个网站,A页面,B页面,C页面.....等都需要显示某个数据怎么办?
一个项目,有一些固定不变参数,需要提前加载,方便后续使用,这数据存放在哪?
上面这些都涉及到数据存储,换一种讲法就是数据共享。java web提出解决方案是共享对象。
2>为什么要有3个数据共享对象
request:2个请求间数据共享
session:一次会话间数据共享
servletContext:一个web容器间数据共享
从数据共享范围上看, web容器>会话>请求
一个web容器可以创建n多个会话,一个会话中可以包含n多个请求。以百度网站为例子,A页面跳转到B页面需要携带数据,request共享即可。百度网站登录之后,各个页面都显示你登录头像,可以理解我一个会话中,n多个请求间数据共享,那肯定选择session共享。百度这个网站项目某些数据需要给所有用户使用,那就是servletContext共享啦。
3>怎么进行数据共享
统一的操作api
数据共享对象.setAttribute(key, value) / 数据共享对象.getAttribute(key);
4>开发中有啥用
目前想到的就是刚刚说的案例作用
到这,基本上可以认为数据共享这个知识点学到位了,我个人认为。
小C:哦,好像有点明白了,我去梳理一下。
我:好~
小C走后,小胖醋坛子都翻了
小胖:叶子哥,小C为不问我呢,为啥,难道她对你有意思?卧槽,那以后你就是我情敌啦~
我:滚~一边去,女人只会影响我编码速度~