持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
写在前面😘
大一电子信息工程新生,请多多关照,希望能在掘金记录自己的学习历程!
一、Session简介
1️⃣什么是Session
Session:服务端会话跟踪技术,将数据保存到服务端
2️⃣Session工作流程
- 在服务端的AServlet获取一个
Session对象,把数据存入其中 - 在服务端的BServlet获取到相同的Session对象,从中取出数据
- 就可以实现一次会话中多次请求之间的数据共享了
3️⃣Session API 参考
Session对象由服务器创建,通过 HttpServletRequest.getSession() 方法可以获得 HttpSession 对象
HttpSession 接口定义了一系列对 Session 对象操作的方法,如下表。
| 返回值类型 | 方法 | 描述 |
|---|---|---|
| long | getCreationTime() | 返回创建 Session 的时间。 |
| String | getId() | 返回获取 Seesion 的唯一的 ID。 |
| long | getLastAccessedTime() | 返回客户端上一次发送与此 Session 关联的请求的时间。 |
| int | getMaxInactiveInterval() | 返回在无任何操作的情况下,Session 失效的时间,以秒为单位。 |
| ServletContext | getServletContext() | 返回 Session 所属的 ServletContext 对象。 |
| void | invalidate() | 使 Session 失效。 |
| void | setMaxInactiveInterval(int interval) | 指定在无任何操作的情况下,Session 失效的时间,以秒为单位。负数表示 Session 永远不会失效。 |
二、Session基本使用
0️⃣获取session
- 使用request对象获取session对象
HttpSession session = request.getSession();
1️⃣存储数据
- 存储数据到 session 域中,
Object可以存储任意类型的数据
void setAttribute(String name, Object o)
2️⃣获取数据
- 根据 key,获取值
Object getAttribute(String name)
3️⃣删除数据
- 根据 key,删除该键值对
void removeAttribute(String name)
4️⃣代码案例
- SessionDemo1:获取Session对象、存储数据
/**
* 存储数据
*/
@WebServlet(name = "SessionDemo1", value = "/s1")
public class SessionDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取session对象
HttpSession session = request.getSession();
// 2.存储数据
session.setAttribute("username","大角牛向前冲");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
- SessionDemo2:获取Session对象、获取数据
/**
* 获取数据
*/
@WebServlet(name = "SessionDemo2", value = "/s2")
public class SessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 获取Session对象
HttpSession session = request.getSession();
// 2. 获取数据
Object username = session.getAttribute("username");
// 3. 打印结果
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
- 先访问s1,再访问s2,查看控制台输出结果
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗