自学内容网 自学内容网

第17周 第2章Session与ServletContext原理 --- 用户会话Session

Session - 用户会话

  • Session(用户会话)用于保存与“浏览器窗口”对应的数据。
  • Session的数据存储在Tomcat服务器的内存中,具有时效性。
  • Session通过浏览器Cookie的SessionId值提取用户数据。

Session工作原理与特性

  1. Session默认时长为30分钟,存储在Tomcat服务器内存中。
  2. Session与浏览器窗口绑定,不同浏览器窗口间的存储空间相互隔离。
  3. Session创建后,会在Cookie中增加一个特殊的key名为session ID。
  4. Session ID作为身份标识,用于在服务器端提取对应的数据。

Session的应用场景

  1. 慕课网官网使用Session保存登录状态,实现跨请求的用户信息提取。
  2. Session适用于需要保持用户登录状态或跨请求传输数据的场景。
package com.imooc.servlet.session;

// 引入必要的Java类
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Random;

// 使用@WebServlet注解来配置Servlet的访问路径为 "/session/random"
@WebServlet("/session/random")
public class RandomServlet extends HttpServlet {

    // 重写HttpServlet的doGet方法,用于处理GET请求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        // 生成一个0到9999之间的随机整数,并将其赋值给变量random
        Integer random = new Random().nextInt(10000);
        
        // 获取当前请求的HttpSession对象,如果没有则创建一个新的Session
        HttpSession session = request.getSession();
        
        // 将生成的随机数以键值对的形式存储在Session中,键名为"random",值为随机数
        session.setAttribute("random", random);
        
        // 设置响应的内容类型和字符编码,表示返回HTML格式的文本内容
        response.setContentType("text/html;charset=utf-8");
        
        // 向客户端返回一个HTML格式的文本响应,显示生成的随机数
        response.getWriter().println("<h2>随机数" + random + "已生成</h2>");
    }
}

package com.imooc.servlet.session;

// 引入必要的Java类
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

// 使用@WebServlet注解来配置Servlet的访问路径为 "/session/show"
@WebServlet("/session/show")
public class SessionServlet extends HttpServlet {
    
    // 重写HttpServlet的doGet方法,用于处理GET请求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        // 通过请求对象获取当前的HttpSession对象,如果没有则创建一个新的Session
        HttpSession session = request.getSession();
        
        // 从当前Session中获取键名为"random"的属性值,并将其转换为Integer类型
        // 如果该Session中不存在该键名,则返回null
        Integer random = (Integer) session.getAttribute("random");
        
        // 设置响应的内容类型和字符编码,表示返回HTML格式的文本内容
        response.setContentType("text/html;charset=utf-8");
        
        // 向客户端返回一个HTML格式的文本响应,显示名为"random"的Session值
        // 如果没有找到该值,则输出"null"
        response.getWriter().println("name=random的session值为:" + random);
    }
}


原文地址:https://blog.csdn.net/Sweeping_Robot/article/details/142497799

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!