Session会话管理技术

Session会话管理技术

会话: 两个交互,在开发中是指浏览器和服务器它们两个的交互

会话管理: 管理会话中产生的数据,一般是记录登录状态

补充: 状态管理,就是管理数据

1、 Session概述

  • Session用于记录用户的状态。Session指的是在一段时间内,单个客户端与Web服务器的一连串相关的交互过程。

  • 在一个Session中,客户可能会多次请求访问同一个资源,也有可能请求访问各种不同的服务器资源。

2、 Session原理

  • 服务器会为每一次会话分配一个Session对象

  • 同一个浏览器发起的多次请求,同属于一次会话(Session)

  • 首次使用到Session时,服务器会自动创建Session,并创建Cookie存储SessionId发送回客户端,后续再发请求,就会带上cookie,后端就会接收到该cookie中的sessionId从而获得session中的数据

image-20231121144658044

3、 Session使用

  • Session作用域:拥有存储数据的空间,作用范围是一次会话内有效

    • 一次会话是使用同一浏览器发送的多次请求。一旦浏览器关闭,则结束会话

    • 可以将数据存入Session中,在一次会话的任意位置进行获取

    • 可传递任何数据(基本数据类型、对象、集合、数组)

3.1 获取Session

session是服务器端自动创建的,通过request对象获取

        //获取Session对象
        HttpSession session=request.getSession();
        System.out.println("Id:"+session.getId());//唯一标记,

3.2 Session保存数据

setAttribute(属性名,Object)保存数据到session中

    session.setAttribute("key",value);//以键值对形式存储在session作用域中。

ps: 登录成功后将登录信息存储到session

3.3 Session获取数据

getAttribute(属性名);获取session中数据

    session.getAttribute("key");//通过String类型的key访问Object类型的value

ps: 后续其他请求获取session,判断是否有对应的权限或者是否登录

3.4 Session失效

// 调用方法销毁
session.invalidate();//手工销毁
// 浏览器关闭,原有的Session会失效,相对于是没了

ps: 退出登录后,清空session

4、 Session域与Request域应用区别

  • request是一次请求有效,只有一次请求转发内数据可以获得

  • session是一次会话内有效,无论请求转发还是重定向都是可以获得数据的

5、 模拟登录认证[重点]

现有2个资源,一个是登录/login,一个是/list,没有登录认证之前,可以不用登录就可以访问/list所对应的资源,但是不合理,因此我们需要实现登录信息的认证!

即在操作/list等其他请求时,我们需要判断这次请求前有没有登录,如果没有登录就响应(请求转发)到登录页面,如果以前登录过,那就该干什么干什么..

如何实现?

  • 需要在登录成功时,将登录信息存入session

  • 需要在操作/list等请求时先判断session有无登录信息

登录成功后存储session

image-20240402114930053

查询全部时获取session

image-20240402115011867

image-20240402115029265

退出时销毁session

  • 设置一个请求按钮,或者超链接

  • 点击退出到登录页,同时销毁session

设置退出按钮,发送/logout请求

image-20240402115059636

image-20240402115115192

设置接收/logout的Servlet类

image-20240402115220042

6 、总结

session的实际应用:

  • 1 登录成功时存储

  • 2 拦截器中取出数据,判断是否登录,如果已经登录有数据,那就放行,如果没有跳转至登录页

  • 3 退出时销毁session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值