服务器会给每一个用户(浏览器)创建一个Session对象
一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在
用户登录之后,每个网站都可以访问-->保存用户的信息,购物车等信息
Session 和 Cookie的区别:
Cookie是客户访问服务器的时候,服务器把用户的数据写给用户的浏览器,响应给客户端cookie,浏览器保存(可以保存多个),下次访问携带Cookie过去,服务端从请求中拿cookie【一个Cookie只能保存一个信息,一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;浏览器上限300个cookie】
Session把用户的数据写到用户独占Session中,一个浏览器一个,服务器端保存(保存重要的信息,减少服务器资源的浪费。【第一次访问,在服务端登记一个Session,每个用户有唯一SessionID,由用户拿到;服务器的Session可以存很多数据根据ID来区分,每次访问即可找到相应的Session】
Session对象由服务器创建。
使用场景:
保存一个登录用户的信息;
购物车信息;
在整个网站中经常会使用的数据,我们将它保存在Session中;
使用Session:
//注册servlet 一个请求对应一个servlet //解决乱码 resp.setCharacterEncoding("utf-8"); req.setCharacterEncoding("utf-8"); //把文档变为html resp.setContentType("text/html;charset=utf-8"); //得到Session HttpSession session = req.getSession(); //给Session 存入东西 节点 同时可以存对象,比如Person // session.setAttribute("name","rose"); session.setAttribute("name", new Person("jack", 2, 20)); //获取session的Id String id = session.getId(); //判断Session是不是新创建的 .write为写出来,print为打印 boolean aNew = session.isNew(); if (aNew) { resp.getWriter().write("Session 创建成功!id为" + id); } else { resp.getWriter().write("session已经在服务器中存在!id:" + id); } =============================== //把之前的节点 移除 session.removeAttribute("name"); //手动 注销此session session.invalidate(); =========web.xml中配置会话过期================ </servlet-mapping> <!-- 设置Session默认的失效时间 自动失效--> <session-config> <!-- 15分钟后Session自动失效--> <session-timeout>15</session-timeout> </session-config> </web-app>