request.getSession().setAttribute("userLogin",userLogin);
作用是什么?尽量详细些
request.getSession().setAttribute("userLogin",userLogin);
作用是什么?尽量详细些
代码虽然简单,就一句
但是想要理解它到底干什么用的,解释起来就复杂了
-=-=-=-
首先,http协议是基于tcp短连接,每连接一次立即断开
当IE向服务器提交get请求,服务器生成一个html给IE显示
当用户点击了按钮之类的操作,IE连同表单一起想服务器提交post请求,服务器执行之后返回新的html供IE显示
-=-=-=
那么问题来了
服务器怎么知道你提交的post请求是基于已经get之后的呢
如果局域网里有多台电脑,比如你和你的同学在同一个机房里都在用百度查资料,百度怎么知道应该将结果推给谁,不会推错了呢
-=-=-=
当你首次登陆某个网站时(这里的登陆就是单纯指访问,不一定要输入用户名密码)
网站会给你分配一个session ID,IE会将这个ID存在本地cookie里,再次提交时,IE将连同session ID一起提交
这样服务器就能知道到底谁是谁了,不会弄错了
--==-=-
那么request.getSession(),其实就是找到用户对应的session ID下的session,session类似字典的结构,是由一系列键值对组成的,而且每个用户有自己的session对象,自动通过session ID区分的。
request.getSession().setAttribute("userLogin",userLogin);就是向session里塞入一个对象,key是"userLogin",value是userLogin变量的值
同理,使用getAttribute可以通过key获取session里的值
-=-===-
这有什么用呢?
比如你的网站有个登录页面,那么登录过后,登录信息存在哪呢,你怎么知道谁登录了谁没登录呢
登录了那么用户名是什么呢
这些常用信息就可以存session里,你就不需要总去访问数据库,可以直接从内存里拿
或者简单点说,session可以用来存全局变量
你需要跨页面传值,或者需要记录一些常用值,都可以通过session
这不同于static变量,static也是全局变量,但是每个用户看到的值都一样
而session可以让每个用户看到的值是不同的
-=-==-=-
session可以跨页面,整个网站共享session的值
session有过期时间,默认是20分钟,以保证用户不再操作页面了之后,session得以释放,而不会造成内存无限增加
-=-=-=