会话跟踪,其原理是什么。
我们都知道,为了在WEB服务器中识别发出请求的用户,对于每一个访问者WEB服
务器都会给其创建一个session。在会话的创建于使用中,比较容易犯错误的地
方主要是当我们需要读取出保存在session的数据时,没有转化为相应的格式,
导致程序出错。比如:
HttpSession session=request.getSession();
|\\\\\\\\\\
注意Session在为进行HttpSession session=request.getSession();之前
out.println(request.getSession());
HttpSession hs=request.getSession();
out.println(hs);
两者执行的结果相同;
第一个是获得Tomcat内置的默认Session (就是会话建立时自动生成的Session唯一标记本次会话)
第二次 是把 唯一的标识Session 通过request.getSession()获取内存地址 给hs 然后hs
会获取Session 然后对其操作 其实本质上是对本次会话的唯一Session进行操作.
\\\\\\\\\\\\\\
String MyName="Hello Accp";
session.setAttribute("name",MyName);
String name=seeeion.getAttribute("name");//错误的
String name=(String)seeeion.getAttribute("name");//正确的
由于WEB服务器为用户创建的Session会占用系统内存,所以通常服务器都需要及
时的删除Session信息以释放资源,方法有:
①关闭浏览器,关闭Session。
②调用HttpSession的invalidate()方法,删除HttpSession对象和数据。
③两次访问时间间隔大于Session定义的非活动时间。
在Servlet中的HttpRequestServlet对象创建HttpSession对象有两种方法:
①HttpSession session=request.getSession(boolean value);
②HttpSession session=request.getSession();
第一中方法中,布尔值为true时,如果存在于当前请求相关联的会话,就返回该
会话,否则就返回一个新会话。反之,布尔值为false时,如果存在当前请求相
关联的会话,就返回该会话,否则就返回null。
第二种方法与第一种方法的第一种情况相同。通常我们都喜欢使用第二种方法。
posted on 2011-10-16 21:29
Tomas 阅读(226)
评论(0) 编辑 收藏