cookie 与session 区别和联系

来源:互联网 发布:阿里云smtp服务器地址 编辑:程序博客网 时间:2024/05/14 21:08
  • 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 数组中查找指定名称cookieCookie 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// 客户端对于同一个网站会存在很多个cookieprivate Cookie findCookie(Cookie[] cookies, String name) {if (cookies == null) {// 不存在任何cookiereturn null;} else {// 存在cookie,查找指定cookiefor (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
原创粉丝点击