关于Session得一些理解
首先,要明白一点,SessionID是服务器分配给浏览器得,不同的服务器分配给同一用户的SessionID是不同的。即假如用户第一次访问网易,那么网易的服务器会分配SessionID给用户,SessionID存在用户的cookie中。
用户访问网易的其他页面时,网易的服务器审查cookie中的SessionID是否存在于自己的服务器中,若存在,即可直接访问网易的其他页面。但是若用户访问百度的服务器,需要重新获取百度的SessionID。
当我们一旦把浏览器关掉后,再打开浏览器再请求该页面,它会让我们登录,这是为什么?我们明明已经登录了,而且还没有超时,sessionId肯定还在服 务器上的,为什么现在我们又要再一次登录呢?这是因为我们关掉浏览再请求的时候,我们提交的信息没有把刚才的sessionId一起提交到服务器,所以服 务器不知道我们是同一个人,所以这时服务器又为我们分配一个新的sessionId
只有在servlet中调用request.getSession();或者request.getSession(true);服务器才会产生session。
 throws ServletException, IOException {
// 先解决中文乱码问题
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
// 得到session
HttpSession session = req.getSession();
// 给session存放数据
session.setAttribute("name","mao");
// 获取sessionID
String sessionid = session.getId();
// 判断Session是否为新创建得
if (session.isNew()){
resp.getWriter().write("新创建了一个session,id为"+sessionid);
}else {
resp.getWriter().write("已经有了这个session,id为"+sessionid);
// session.removeAttribute("name");//删除session键值对
// session.invalidate();//注销session
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet( req, resp);
}