黑马程序员技术交流社区

标题: [石家庄校区黑马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