1.会话技术
从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。
Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie
Session:将数据存储到服务器端,安全性相对好,增加服务器的压力
Cookie技术
创建Cookie:
Cookie cookie = new Cookie(String cookieName,String cookieValue);
设置Cookie在客户端的持久化时间:
cookie.setMaxAge(int seconds); ---时间秒
注意:如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里
3)设置Cookie的携带路径:
cookie.setPath(String path);
注意:如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息
3)向客户端发送cookie:
response.addCookie(Cookie cookie);
3)删除客户端的cookie:
如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时间为0的cookie进行覆盖即可
Cookie cookie= new Cookie("goods","iphone12"); cookie.setPath("/WEB04"); cookie.setMaxAge(0); response.addCookie(cookie);
1.服务器端接受客户端携带的Cookie
cookie信息是以请求头的方式发送到服务器端的:
1)通过request获得所有的Cookie:
Cookie[] cookies = request.getCookies();
2)遍历Cookie数组,通过Cookie的名称获得我们想要的Cookie
for(Cookie cookie : cookies){
if(cookie.getName().equal(cookieName)){
String cookieValue = cookie.getValue();
}
}
//记录当前系统时间发送给客户端 Date date=new Date(); //创建日期格式转换类 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=sdf.format(date); //创建cookie对象 Cookie cookie=new Cookie("lastAccessTime",time); //设置持久化时间 cookie.setMaxAge(3*60); //发送cookie response.addCookie(cookie); //获取客户端携带的Cookie信息-lastAccessTime String lastAccessTime=null; Cookie[] cookies=request.getCookies(); if(cookies!=null){ for(Cookie c:cookies){ if(c.getName().equals("lastAccessTime")){ lastAccessTime=c.getValue(); } } } //对lastAccessTime进行判定 //解决响应乱码 response.setContentType("text/html;charset=utf-8"); if(lastAccessTime==null){ response.getWriter().write("你是第一次访问"); } else{ response.getWriter().write("你上次访问的时间为:"+lastAccessTime); }