会话技术Cookie & Session
?
?? ? ? ?当我们打开浏览器,在浏览器上访一个网站,不管在网站里点击多少个超链接、访问多少资源,一直到关闭浏览器,这一整个过程就是一个会话。?1.2、会话中常需要解决的问题?? ? ? 用户与服务器的交互会话过程中,每个用户都会存在自己的一些数据,例如登录后记住登录状态,用户访问过的资源信息、网上购物选购的商品信息.......? ? ? ?对于某些会话数据,有时候程序必须想办法保存这些数据: 1.3、保存会话数据的两种技术——cookie & session? ?下面主要是本人自己的一些理解,使用的例子都较为基础,更多使用方法可以通过查阅API。1.3.1、cookie什么是cookie? ? ? ? ?cookie形式的文件其实一般就是一个txt文档,只是文档里以某种格式保存数据的。 java中使用cookie:要导入javax.servlet.http.Cookie这个包?? ? ? //1.添加一个cookie到客户端, ?? ? ? ? ?Cookie c2 = new Cookie("password","123");? ? ? ? ?c2.setMaxAge(3600); ? ??//设置生命周期为1小时,秒为单位? ? ? ? ?response.addCookie(c2);//向浏览器添加一个cookie?? ? }?? ?如果在添加cookie时没有设置生命周期,那这个cookie只存在客户端的内存中,并未写到硬盘文件中(如果客户端关闭?此浏览器窗口,就丢失了)? ?如果设置了生命周期,那么就会将此cookie写到硬盘文件中,直到设置的生命周期结束才会失效。?//2.读取cookie文件public void getCookies(){? ? ? ? ? ? ?Cookie[] cookies = request.getCookies(); ?//首先要取得浏览器上所有的cookie,返回一个数组? ? ? ? ? ? for(Cookie c :cookies ){ ? ? ? ? ? ? ? ? ? ? ?//遍历查找名为username的cookie ? ? ? ? ? ? ? ? ? ? ? ? ?System.out.println(c.getName()+"--->"+c.getValue());? ? ? ? ? ? ? ? ? }? ? ? ? ? ? }? ? ?}?//3.删除cookie文件,可以将cookie的生命周期设置为0,浏览器就会将其删除 ? ? ? ?Cookie c1 = new Cookie("username",null);? ? ? ?c1.setMaxAge(0);? ? ? ?response.addCookie(c1); ? 1.3.2、session什么是session? ? ? ? ?因为是保存在服务器的内存中,所以当会话结束(浏览器关闭),对应的session也会结束。?java中使用session:要导入javax.servlet.http.HttpSession这个包//1.添加一个session到服务器? ? public void addSession(){? ? ? ? ? HttpSession session = request.getSession();? ? ? ? ? session.setAttribute("username","su"); //向服务器添加一个名为username的session? ? ?}?//2.获取一个session的值? ? public void getSession(){ ? ? ? ? ? String username =(String) session.getAttribute("username");? ? ?}?//3.删除session? ? public void deleteSession(){? ? ? ? ? HttpSession session = request.getSession();? ? ? ? ? session.removeAttribute("变量名");?//删除某个session? ? ? ? ? session.invalidate(); //删除所有session? ? ?}
?