一两0_0 2022-07-28 10:22 采纳率: 100%
浏览 89
已结题

request.getSession().setAttribute("userLogin",userLogin);


request.getSession().setAttribute("userLogin",userLogin);

作用是什么?尽量详细些

  • 写回答

1条回答 默认 最新

  • 於黾 2022-07-28 10:34
    关注

    代码虽然简单,就一句
    但是想要理解它到底干什么用的,解释起来就复杂了
    -=-=-=-
    首先,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得以释放,而不会造成内存无限增加
    -=-=-=

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月5日
  • 已采纳回答 7月28日
  • 创建了问题 7月28日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。