java cookie学习
打开一个游览器访问某个站点,然后关闭游览器这就叫一次会话。
会话技术有2种,cookie和session
cookie:是把数据储存到客户端,安全性能不好(如果在网吧登录网页保留了cookie,下个使用者可能会盗取你的cookie),可以手动清除数据
session:数据存储到服务器中,对硬件要求较高,安全性能好
cookie的创建
1 //1.创建Cookie对象 2 //Cookie cookie = new Cookie("goods","huashengmi"); 3 //设置cokie持久化时间 4 //cookie.setMaxAge(2*60); 5 //设置cookie的携带路径 6 //cookie.setPath("Web0707/com.oracle.demo01/SendCookieServlet"); 7 // cookie.setPath("/Web0707"); //访问web0707下的任何资源都携带 8 //发送cookie 9 //response.addCookie(cookie);
如果设置了cookie的持久化时间,想更改,可以创建一个同名的cookie,相同路径,然后设置0秒覆盖即可
1 //删除设置的cookie持久化时间 2 Cookie cookie = new Cookie("goods","huashengmi"); 3 cookie.setPath("/Web0707"); 4 //设置时间为0 5 cookie.setMaxAge(0); 6 response.addCookie(cookie);
接收客户端发送来的cookie
1 //接收客户端发送的cookie 2 //用cookie数组接收键值对 3 Cookie[] cookies = request.getCookies(); 4 //先判断下这个cookie数组是不是空的,如果是空的直接没有,增加健壮性 5 if(cookies!=null){ 6 for(Cookie c:cookies){ 7 //获取键 8 String name = c.getName(); 9 //如果cookie的键是我要获取的键,就获取值 10 if(name.equals(name)){ 11 String value = c.getValue(); 12 response.getWriter().write(value); 13 } 14 } 15 16 }
获取登录时间
1 //获取时间,转换格式 2 response.setContentType("text/html;charset=utf-8"); 3 Date date = new Date(); 4 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"); 5 String sj = sdf.format(date); 6 //发送cookie 7 Cookie cookie = new Cookie("time",sj); 8 cookie.setMaxAge(60); 9 response.addCookie(cookie); 10 //再获取客户端发的cookie,返回时间 11 String xianzai=null; 12 Cookie[] cookies = request.getCookies(); 13 if(cookies!=null){ 14 for(Cookie c:cookies){ 15 String name = c.getName(); 16 if(name.equals("time")){ 17 xianzai = c.getValue(); 18 response.getWriter().write("上次登录时间:"+xianzai); 19 } 20 } 21 } 22 //如果没有cookie,时间是空的,就可以判断是第一次登录 23 if(xianzai==null){ 24 response.getWriter().write("第一次访问"); 25 } 26 }