首页 > 代码库 > 2016.9.13 会话学习

2016.9.13 会话学习

---恢复内容开始---

会话

打开浏览器访问网站,直至关闭网站为止,所流程被称为会话

cookie

属于客户端技术,把响应的客户端的资源进行存储 只能存字符串

cookie是放在响应头里发送给浏览器

浏览器支持每个服务端20个cookie,共300个 每个cookie 4k大小

实现记录客户端访问的最后时间

1得到客户端所有的cookie

reponse.setContetType("text/html;charset=utf-8");

PrintWriter pw= reponse.getWriter();

Cookie [] cookies=resques.getCookies();

2从cookie中找出存储最后登陆时间的cookie

if (cookies!=null)

{

  for(int i=0;i<cookies.length;i++)//cookie 是一个键值对,都是String类型的

{         String   name = cookies[i].getName();   //得到cookie的名字

          if("lastAccessTime".equals(name))

       String value =http://www.mamicode.com/cookies[i].getValue(); value此时的值是毫秒数的

             pw.wirte( new simpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date( long.parseLong(time))));//时间格式化

}

 

}

把这次登陆时间以cookie的形式发送的客户端

Cookie cookie= new Cookie("lastAccessTime",system.currentTimeMillis()+""); 必须是字符串类型的

把cookie发送给客户端

reponse.addCookie(cookie);

cookie 默认存储在浏览器的内存,浏览器一旦关闭,就会将所存储的缓存清除

使用setMaxAge 设置cookie存活时间,默认单位是秒

setMaxAge(-1)默认为-1 会话结束时删除

0的时候为不保存cookie

正数 为生命周期时间

满足什么条件客户端会带着cookie发给服务器端。

1被访问的资源路径,前段要匹配。

cookie.setPath(request.getContextPath());

 

session

一个客户端对应一个session,同一个会话中只有一个session对象

setAttribute()  getAttribute() 实现session的存储

在服务器端的一个技术,session可以存对象

session.setMaxInactiveInterval(10);//设置非活动时间   10s自动销毁;

request.getSession(true);存在session使用存在的,不存在会创建新的;

request.getSession(false);存在session使用存在的 不存在也不会创建。

 

2016.9.13 会话学习