一两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日

悬赏问题

  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败