使用Cookie跟踪Session的基本原理是把Cookie与服务器上的数据连起来。在Cookie中保存Session ID,会话的数据保存在服务器端,一般的书写格式如下:
String sessionID =makeUniqueString();
HashMap sessionInfo = new HashMap();
HashMap globalTable = findTablStoringSessions();
golbalTable.put(sessionID,sessionInfo);
Cookie sessionCookie = new Cookie(“JSESSIONID”,sessionID);
sessionCookie.setPath(“/”);
response.addCookie(sessionCookie);
上述的代码是使用Cookie跟踪Session的一个代码实例,这段代码必须要放在具体的文件中才能产生作用。
Session对应的类为javax.servlet.http.HttpSession类。每个来访者对应一个Session对象,所有该客户的状态信息都保存在这个Session对象里。Session对象是在客户端第一次请求服务器的时候创建的。
Session也是一种key-value的属性对,通过getAttribute(String key)和setAttribute(String key, Object value)方法读写客户状态信息。
Servlet里通过request.getSession()方法获取该客户的Session。
request还可以使用getSession(boolean create)来获取Session。区别是如果该客户的Session不存在,request.getSession()方法会返回null,而getSession(true)会先创建Session再将Session返回。
Servlet中必须使用request来编程式获取HttpSession对象,而JSP中内置了session隐藏对象,可以直接使用。如果使用声明了<%@ page session=”false” %>,则session隐藏对象不可用。
Servlet/JSP的Cookie跟踪Session会话有着一定的局限,主要局限有以下几种:
会话对象保存在内存之中,占用了可观的资源。
会话跟踪依赖于Cookie,由于各种原因,特别是安全上的原因,用户如果关闭了Cookie将使会话跟踪无法进行。
会话要用到服务器创建的会话标示符。在多个Web服务器以及多个JVM的环境中,Web服务器不能识别其他服务器创建的会话标识符,会话跟踪机制无法发挥作用。
本文链接地址: jsp中是怎么使用Cookie跟踪Session
jsp中是怎么使用Cookie跟踪Session
发表回复