欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Session会话管理技术

Session会话管理技术

2024/11/29 21:10:09 来源:https://blog.csdn.net/weixin_61898502/article/details/142712461  浏览:    关键词:Session会话管理技术

Session会话管理技术

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

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

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

1、 Session概述

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

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

2、 Session原理

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

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

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

  • 注意:session是由服务端创建的,存储在服务器

  • 注意: cookie是由服务器创建的,存储在浏览器

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com