Session的实现(个人理解)

Session即服务器端为了保存用户的状态而创建的一个特殊的对象(即session对象),可以实现跨域存取数据 

  • 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.
  • 当浏览器(实际是用户我觉得)第一次访问服务器时,服务器会创建session对象(该对象有一个唯一的id,一般称之为sessionId),接下来服务器会sessionId以cookie的方式发送给浏览器。。如果有sessionId,就会依据sessionId去查找对应的session对象,如果找到了就返回该对象,找不到则会创建一个新的session对象。
  • 当浏览器再次访问服务器时,会将sessionId发送过来,服务器就可以依据sessionId找到对应的sessinon对象。

       并且理论上浏览器中有一个网站打开的多个页面是一个session存所有属性,并不是一个浏览器一个session,但是如果某个用户在网站的所有操作应该是一个session,怎样区别多个用户对服务器的交互呢,是利用cookie实现的特殊sessionID(目前还没深学先占坑)(目前了解到是当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session并且生成一个SessionID,这个SessionID在响应浏览器的时候会被装进cookie中,从而被保存到浏览器中当用户再一次访问Servlet时,请求中会携带着cookie中的SessionID去访问服务器会根据这个SessionID去查看是否有对应的Session对象有就拿出来使用;没有就创建一个Session(相当于用户第一次访问)

        在Servlet中无法直接创建Session,是通过HttpSession session = request.getSession(); session.setAttribute()来获取session对象进行操作或者是在doget(HttpServletRequest request, HttpServletResponse response)方法里request.getSession().setAttribute();进行操作。

PS.

getParameter()方法传递数据,是从客户端传递到服务器,代表的是HTTP请求数据,getParameter()方法返回的是String类型的数据。

setAttribute()和getAttribute()方法传递的数据只会在服务器内部,在具有转发关系的WEB组件中传递,这两个方法返回的都是Object类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值