1.什么是会话?
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
保存会话数据有两种技术:Cookie Session
2.1 现在先介绍如何使用Cookie技术:
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Cookie应用代码:(显示上次访问时间)
在CookieDemo中的doGet方法中的步骤如下:
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type", "text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//你得到上次访问的cookie对象
out.print("您上次访问的时间是:");
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
Cookie cookie = cookies[i];
if("lastTime".equals(cookie.getName())){
String lastTime = cookie.getValue();
Date date = new Date(Long.parseLong(lastTime));
out.print(date.toLocaleString());
}
}
//记录这次cookie信息 记录你这次访问日期
//创建Cookie
Cookie ck = new Cookie("lastTime",System.currentTimeMillis()+"");
/*有效日期为0时 创建cookie到会话结束 删除cookie*/
ck.setMaxAge(3600);//1小时
ck.setPath("/20111024/servlet/cookieDemo");
//发送给你的响应
response.addCookie(ck);
2.2 Session技术:
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
在DemoServlet中doGet方法中步骤如下:
/*怎么获取 创建session*/
HttpSession session = request.getSession();
//存入数据
session.setAttribute("name","redarmy");
在Demo01Servlet的doPost方法中步骤如下:
HttpSession session = request.getSession();
String value = (String) session.getAttribute("name");
System.out.println("name"+value);
先访问DemoServlet再访问Demo01Servlet.
3. Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。