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 }