cookie 与session 区别和联系

  • Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

  • Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务

当用户第一次访问服务器的时候,这时候在request对象里是没有携带cookie信息的,当访问了服务器之后,服务器就会往客户端写一个唯一标识的cookie,
当用户在第二次访问服务器的时候,这时request对象就会携带上次的cookie信息进行访问服务器,因为cookie有个唯一标识的ID号,所以,之前的信息不丢失。

记录用户上次访问时间的例子:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 判断是否存在cookie 信息
		Cookie[] cookies = request.getCookies(); // 获得所有cookie信息
		// 在cookies 数组中查找指定名称cookie
		Cookie lastVisitCookie = findCookie(cookies, "lastvisit");
		if (lastVisitCookie == null) {
			// 不存在上次访问时间
			response.setContentType("text/html;charset=utf-8");
			response.getWriter().println("欢迎第一次访问XXX网站!");
		} else {
			// 存在上次访问时间
			long lastvisittimes = Long.parseLong(lastVisitCookie.getValue()); // 假设保存时间是毫秒
			response.setContentType("text/html;charset=utf-8");
			response.getWriter().println(
					"您上次的访问时间是:" + new Date(lastvisittimes).toLocaleString());
		}

		// 向客户端写回最新访问时间
		Cookie newLastVisitCookie = new Cookie("lastvisit", System
				.currentTimeMillis()
				+ "");
		newLastVisitCookie.setMaxAge(60 * 60);// 保存cookie 1小时
		newLastVisitCookie.setPath("/");
		response.addCookie(newLastVisitCookie);
	}

	// Cookie格式========== Cookie: name=value,name=value,name=value
	// 客户端对于同一个网站会存在很多个cookie
	private Cookie findCookie(Cookie[] cookies, String name) {
		if (cookies == null) {
			// 不存在任何cookie
			return null;
		} else {
			// 存在cookie,查找指定cookie
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals(name)) {
					// 找到了
					return cookie;
				}
			}

			// 没有找到
			return null;
		}
	}

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


第一次访问这个servlet 程序的时候,因为reqeust对象中没有携带cookie信息。所以页面显示的是 ----” 欢迎第一次访问XXX网站!“







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值