创建Session时会把含有Session ID 的Cookie对象加到响应对象上

从逻辑角度讲,我们应该会这样做,因为创建Session的目的,在于保存会话信息,所以要把SessionID传给浏览器,以便后面的请求能找到服务器中自己的Session,来获取自己的会话信息。

我们来分析下源代码

以下面的代码为例

public class IndexServlet extends HttpServlet {
		public void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		// 解决乱码问题
		response.setContentType("text/html;charset=utf-8");
		// 创建或者获取保存用户信息的Session对象
		HttpSession session = request.getSession();
		User user = (User) session.getAttribute("user");
		if (user == null) {
			response.getWriter().print("您还没有登录,请<a href='/chapter05/login.html'>登录</a>");
		} else {
			response.getWriter().print("您已登录,欢迎你," + user.getUsername() + "!");
			response.getWriter().print("<a href='/chapter05/LogoutServlet'>退出</a>");
			// 创建Cookie存放Session的标识号
			/*
			 * Cookie cookie = new Cookie("JSESSIONID", session.getId());
			 * cookie.setMaxAge(60 * 30); cookie.setPath("/chapter05");
			 * response.addCookie(cookie);
			 */
		}
		}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

先运行一下看下效果

可以看出浏览器获得了SessionID,那么上面的代码中哪一句,让响应对象添加了SessionID,最有可能的是HttpSession session = request.getSession(),我们debug进去看看:

 我们再从这里进去看看

最后我们可以看到响应对象添加了响应消息头,消息头就有session ID,如下图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值