黑马程序员技术交流社区
标题:
[石家庄校区黑马JavaEE6期]会话技术总结
[打印本页]
作者:
阿里云
时间:
2018-2-4 15:40
标题:
[石家庄校区黑马JavaEE6期]会话技术总结
本帖最后由 小石姐姐 于 2018-2-8 15:30 编辑
会话技术总结
【会话技术】
什么是会话 :用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.(打开和关闭浏览器而不是一个页面)
常见的会话技术:
Cookie :将数据保存到客户端浏览器.
Session :将数据保存到服务器端.
为什么使用会话技术?
私有的数据,购物信息数据保存在会话技术中.
【Cookie技术的使用】
获得浏览器带过来的Cookie:
HttpServletRequest有一个方法:Cookie[] getCookies();
创建一个Cookie对象:
Cookie(String name,String value);//存储了一个键值对
向浏览器保存数据:
HttpServletResponse有一个方法:void addCookie(Cookie cookie);
cookie中尽量不要保存中文,因为它用的是iso8859-1编码,需要解决乱码问题.
【Cookie的常用的API】
getName();
getValue();
setDomain(String domain); -- 设置Cookie的有效域名. //
www.baidu.com
music.baidu.com 共享一个cookie用,一般不用
setPath(String path); -- 设置Cookie的有效路径. 这个比较重要 一般把路径写成工程名,这样和其他网站的cookie区分开
setMaxAge(int maxAge); -- 设置Cookie的有效时间. 默认是关闭窗口删除cookie,这个方法可以设置有效时间,单位是秒.
删除cookie:其实就是将相应的路径和名的cookie的有效时长改为0,然后写回! setMaxAge(0)
Cookie cookie = new Cookie("history",null);
cookie.setPath("/day11");
cookie.setMaxAge(0);
response.addCookie(cookie);
response.sendRedirect("/day11/demo2/product_list.jsp");
可以使用cookie做什么?
记录用户名
制作商品浏览记录(现实开发中是存在数据库的,这里是锻炼cookie的)
Cookie的分类有关:
会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在. 手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.
【增删改查总结】
cookie的增删改查 一个键值对容器
创建:new Cookie("键","值");
增加:response.addCookie()来添加
删除:setPath("路径");setMaxAge(0);
获取:request.getCookies();
四个域对象的增删改查 四大域对象:page request session application
存入数据: void setAttribute(String name,Object obj);//obj就是要存的值 例如: this.getServletContext().setAttribute("count", 1);
获取数据:Object getAttribute(String name);
移除数据:void removeAttrivute(String name);
【Session的概述】
Cookie本身是有大小和个数的限制.Session没有限制. 目前最多能保存300个cookie,正在变大.而session的多少取决于服务器硬盘的大小.
Cookie的数据保存在客户端,Session数据保存在服务器端.
Session的执行原理:基于Cookie的. session的id存储到在cookie中,在浏览器之间传输并且保证每个客户端获取各自的session. session的id为每个客户设置一个字段实现购物车
使用Session:
获得Session:request.getSession();
获得之后有两个方法
获得 getAttribute(String name, Object(map集合) list)
设置 setAttribute(String name, Object(map集合) list)
Session是域对象:(requst,servletContext都是域对象)
【
session何时创建和销毁?作用范围
】
创建:服务器端第一次调用getSession()创建session.
销毁:三种情况销毁session
1.session过期. 默认过期时间为30分钟,在tomcat下面有设置(conf=>web.xml=>搜索session...标签修改销毁时间),把销毁时间改成0就永久了. 关闭浏览器session不销毁!!!
2.非正常关闭服务器.如果正常关闭session序列化到硬盘,创建了一个文件,当下次启动就自动读取并销毁了文件. 如果session中存储对象,name对象必须实现序列化接口
3.手动调用销毁session.invalidate(); removeAttribute(); 千万不要随便用,删除之后就没有了
作用范围:多次请求.(一次会话)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2