前面引用一些大纵、通俗易懂的描述。笔记贴,有错还请提出,互相进步,谢谢。
一、会话的概念
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾经来过,这称之为有状态会话。
二、会话过程中要解决的一些问题?
每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。
三、保存会话数据的两种技术
Cookie 、Session
Cookie:是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Session:是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于 session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它 web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
四、Cookie类的主要方法
Cookie(String name, String value)描述:实例化Cookie对象,传入cooke名称
public String getName() 描述:取得Cookie的名字
public String getValue() 描述:取得Cookie的值
public void setValue(String newValue) 描述:设置Cookie的值
public void setMaxAge(int expiry)描述:设置Cookie的最大保存时间
public void setPath(String uri) 描述:设置cookie的有效路径
public void setDomain(String pattern)描述: 设置cookie的有效域
详细细节阅读java中javax.servlet.http.Cookie
五、Cookie类使用范例
//获取会话信息
Cookie[] cookies = request.getCookies();
if(cookies!=null) {
for (Cookie cookie : cookies) {
//打印cookie信息 response.getWriter().println(cookie.getName()+”:”+URLDecoder.decode(cookie.getValue()));
}
//获取session信息
response.getWriter().println(“——session信息————–);
response.getWriter().print(request.getSession().getAttribute(“info”));
response.getWriter().println(request.getSession().getId());
//Cookie实现会话跟踪
//写cookie
Cookie cookie =new Cookie(“info”, URLEncoder.encode(name));
cookie.setMaxAge(-1);//有效时间0代表删除,-1永久有效,或者以秒为单位的int
response.addCookie(cookie);//session会话跟踪
HttpSession session = request.getSession();
session.setAttribute(“info”, name);
response.sendRedirect(“view.do”);
六、关于Cookie和Session的问题
一、描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。如果客户在浏览器上禁用了cookie,如何做会话跟踪?
回答:Cookie是浏览器端技术,将会按照服务端响应的指示(response.addCookie(new Cookie(k,v)))把cookie键值对存储在本地(和网址关联的),且在随后的访问中把cookie添加到请求header中发送给服务器。
Seesion是服务端,web容器当中的一个容器,存储在服务器端的内存里面,用来进行会话跟踪的,同一个客户端的多个请求将映射到同一个session。典型的应用:1、存储用户的登录状态 2、维持购物车这样的可连续操作的内容