session和cookie

文章目录

session工作机制

当第一次调用getSession()就创建了session对象,并且会为f该对象分配一个id,将这个id保存到session对象中,再复制一个副本以cookie的方式保存到浏览器

在以后再次调用getSession()方法的时候会将客户端传递的cookie进行遍历,如果有JESSIONID并且能和服务器端的id匹配则不再生成新的session内置对象,而是直接返回该对象

如果直接访问一个servlet,在servlet中不调用getSession()方法是不会生成新的session内置对象的

package com.xie;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@SuppressWarnings("serial")
public class EmpServlet extends HttpServlet{
	public void getCookie(HttpServletRequest req, HttpServletResponse resp) {
		//调用getSession()方法
		req.getSession();
		Cookie [] ck = req.getCookies();
		//遍历数组
		if (ck!=null) {
			for (Cookie cookie : ck) {
				System.out.println(cookie.getName()+"="+cookie.getValue());
			}
		}
	}
}

session和cookie
还有一种情况会产生session内置对象,访问jsp页面的时候会产生该对象。

之所以访问jsp页面能创建session对象,原因是jsp其实也是一个特殊的Servlet,而且在这个特殊的servlet中默认调用了getSession()方法

当你访问一个jsp页面的时候,会将jsp转换成一个*.java源码文件,之后再将该类转换为*.calss文件,其实转换后的*.class文件就是一个特殊的servlet,而且在该servlet中调用getSession()方法