Session和Cookie

本文详细解析了session的工作机制,包括session对象的创建过程,如何通过cookie保存和读取session ID,以及在Servlet和JSP中调用getSession()方法的时机与效果。通过一个具体的EmpServlet示例,展示了如何在Servlet中使用session。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

session 工作机制
  当第一次调用getSession( )就创建了 session 对象, 并且会为该对象分配一个id,
  将这个 id 保存到session 对象中, 再赋值一个副本以 cookie 的方式保存到浏览器.
  再次调用 getSession( ) 方法的时候会将客户端传递的 cookie 进行遍历判断,
  如果有 JESSIONID 并且能和服务器端的 id 匹配 则不再生成新的内置对象, 直接返回该对象.
  如果直接访问一个 servlet. 在servlet 中不调用 getSession( )方法不会生成 session 内置对象的

注意:
访问 jsp 页面的时候会产生 session 对象 , 因为 jsp 是一个特殊的 Servlet,
而且在这个特殊的 Servlet 中默认调用了 getSession( ) 方法.
当访问 jsp 页面的时候回家过 jsp 转换成一个*.java原码文件, 之后再将该类转换为*.class 文件,
转换后的*.class文件就是一个特殊的 servlet, 而且在该servlet 中调用 getSession( )方法.

ex:

 1 @SuppressWarnings("serial")
 2 public class EmpServlet extends HttpServlet {
 3     @Override
 4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 5         //调用了 getSession() 方法
 6         req.getSession();
 7         Cookie[] cs = req.getCookies();
 8         if (cs != null) {
 9             for (Cookie c : cs) {
10                 System.out.println(c.getName() + ":" + c.getValue());
11             }
12         }
13     }
14 }

 

转载于:https://www.cnblogs.com/yslf/p/10745577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值