【JavaWeb】Session详解

本文详细介绍了Session的概念、为何需要Session以及在Web应用中如何实现Session。通过HttpSession对象,探讨了Session的原理,包括Session ID的生成与管理。同时,文章分析了Session的细节,如客户端关闭或服务器关闭后Session的处理,并讨论了Session的特点及其与Cookie的区别。最后,通过一个验证码案例展示了Session的实际应用场景。
摘要由CSDN通过智能技术生成

Session入门

概念

Session是服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。

为什么需要Session

  我们用浏览器打开一个网页,用到的是HTTP协议,学过计算机的应该都知道这个协议,它是无状态的,什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。但是这种无状态的的好处是快速。但是这带来一个问题,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你。但是平时我们浏览网页的时候,会遇到例如在“https://login.taobao.com/”只需要输入一次账号密码,后面浏览该网站的其他内部“https://www.taobao.com/?spm=a1”不需要重新登录的情况,这又是如何实现的呢?cookie可以实现吗?由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全。那如何又要安全,又可以方便的全局读取信息呢?实际上正是session起到的作用,事实上它并不是什么新技术,而且也不能脱离http协议以及任何现有的web技术。
  session原理很简单,假设你访问网页时就像去澡堂,第一次进去你是没有钥匙的,这个时候你交了钱服务台就分配一把钥匙给你,你走到哪里都要带上,因为这是你身份的唯一标识,接下来你用这把钥匙可以去打开一个专有的储物柜存储你的衣物,游完泳,你再用钥匙去打开柜子拿出衣物,最后离开游泳池时,把钥匙归还,你的这次游泳的过程就是一次session,或者叫做会话,在这个例子中,钥匙就是session的key,而储物柜可以理解为存储用户会话信息的介质。

在web中如何实现session

      想必看了上面的例子你会很容易理解,但是钥匙的问题如何解决,即什么东西可以成为一个标识让你每次请求都会自动带到服务器呢?如果你比较了解http协议,那么答案一目了然,就是cookie,cookie是把少量的信息存储在用户自己的电脑上,它在一个域名下是一个全局的。如果你想为用户建立一次会话,可以在用户授权成功时给他一个cookie,如果下次发现用户带了这个cookie,服务器就知道,哎呀,刚刚这位顾客来了。

     对于第二个问题,即如何存储用户的信息,服务器知道会话id为abc的用户来了,那abc想存储自己的私人信息,比如购物车信息,如何处理?这个时候可以用内存、也可以用文件,也可以用数据库。

HttpSession对象

获取HttpSession对象:

HttpSession session = request.getSession();

使用HttpSession对象:

Object getAttribute(String name)  
void setAttribute(String name, Object value)
void removeAttribute(String name)  

案例1:数据共享

/**使用session进行数据共享‘
 * @author liwenlong
 * @data 2020/3/24
 */
@WebServlet("/sessionDemo1")
public class SessionDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值