Cookie、Session、cache的区别之前已经做过解释,不再赘述(http://blog.csdn.net/lmdcszh/article/details/8986312)。这里重点总结一下Servlet对Cookie、Session的代码操作实现,作为一个基础是需要熟练运用的。
*************************************针对Cookie的操作**************************************************************************
创建一个cookie:键值对的形式
Cookie c1 = new Cookie("password", "123");
response.addCookie(c1);
如果想在客户端保留cookie文件,只需要设置一个有效的Cookie时间即可:
Cookie c2 = new Cookie("client_ip", request.getRemoteAddr());
//设置cookie的生命周期为一个小时,单位为秒,自动在客户端创建文本文件记录cookie
c2.setMaxAge(60*60);
response.addCookie(c2);
从cookie中读取值: 循环Cookie数组
Cookie[] cook =request.getCookies();//用一个Cookie数组来接收
for(int j=0;j<cook.length;j++){//通过循环来打印Cookie
cook[j].getName()://取cookie的名
cook[j].getValue()://去cookie的值
}
删除cookie:
Cookie deleteNewCookie=new Cookie("newcookie",null);
deleteNewCookie.setMaxAge(0); //删除该Cookie
deleteNewCookie.setPath("/");
response.addCookie(deleteNewCookie);
使用setMaxAge(int expiry)方法来设置Cookie的存在时间,参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。注意这个值是cookie将要存在的最大时间,而不是cookie现在的存在时间。负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。
*************************************针对Session的操作*************************************************************************
创建Session:
HttpSession session = request.getSession(true);
session.setAttribute("ip", request.getRemoteAddr());
获取Session:
HttpSession session = request.getSession(true);
String ip = (String)session.getAttribute("ip");
response.getWriter().println("ip=" + ip);
删除Session:
//清除Session里的某个属性
session.removeAttribute("sessionname")
//Session失效.
session.invalidate()
另外,关闭页面后你的web容器会自动销毁session;可以在ServletContext 中放入一个用户池,登录后放入用户池。注销、cookie过期、session销毁都把用户从用户池中删除。
在Cookie中有很多文章,如:会话跟踪、会话浏览、重定向、不依赖与浏览器的会话跟踪和浏览(使用流输出),都是基于上面的基础,附上源码下载连接(http://download.csdn.net/detail/lmdcszh/5490919)。