Cookie&Session学习笔记

【会话技术】

一次会话:用户打开浏览器访问一个页面开始,多次访问页面,到最后关闭浏览器的过程称为是一次会话.


【常见的会话技术】

Cookie

是一种客户端的技术,将数据保存到客户端浏览器的内存中.

Session

是一种服务器端技术,将数据保存到服务器端.


【Cookie的使用的小结】

// 获得Cookie:

扫描二维码关注公众号,回复: 1742553 查看本文章

Cookie[] request.getCookies();

// 向浏览器回写Cookie:

response.addCookie(Cookie cookie);

// 构造Cookie

Cookie(String name,String value);


【Cookie的分类】

会话级别Cookie:默认的.关闭浏览器Cookie就会被销毁.

持久级别Cookie:将Cookie保存到本地的硬盘上.


Cookie的API:

* String getName();

* String getValue();

* void setDomain(String str);

    * 设置Cookie有效域名.

* void setPath(String str);

    * 设置Cookie的有效路径.setPath(“/WEB11”);

* void setMaxAge(int maxAge);

    * 设置Cookie的有效时长.setMaxAge(0); --- 删除持久的Cookie.(有效路径必须一致.)


【Cookie的注意事项】

Cookie保存的时候一个浏览器上对Cookie的个数和大小都是由限制的.

Cookie默认不能保存中文.

     *URLEncoder.encode();

     *URLDecoder.decode();


代码实现:

/**

         * 步骤一:在CountServlet中编写代码.

            步骤二:获得从客户端带过来的所有的Cookie.

            步骤三:从客户端带过来的所有的Cookie中查找指定名称的Cookie.

            步骤四:判断是否是第一次访问:

            如果没有查找到:就是第一次访问

            显示欢迎

            如果查找到:不是第一次访问

            显示上次访问时间

            步骤五:记录当前的时间,回写到浏览器.

         */

        Cookie[] cookies = request.getCookies(); //Cookie

        // 调用工具查找指定名称的Cookie:

        Cookie cookie =CookieUtils.findCookie(cookies, "lastVisited");

        // 判断:

        if(cookie == null){

            // 第一次访问

            response.getWriter().println("<h1>您是第"+count+"位登录成功的用户!欢迎登陆本网站!</h1>");

        }else{

            // 不是第一次

            // 获得上次访问时间:

            longlastVisited = Long.parseLong(cookie.getValue());

            Datedate = new Date(lastVisited);

            response.getWriter().println("<h1>您是第"+count+"位登录成功的用户!上次访问时间为:"+date.toLocaleString()+"</h1>");

        }

       

        long time = System.currentTimeMillis();

        // 回写到浏览器:

        Cookie c = new Cookie("lastVisited",""+time);

        response.addCookie(c);



【Session会话】

Cookie有大小和个数的限制的.

而且Cookie数据保存在客户端数据.

Session保存在服务器端,没有大小的限制.


【Session域对象】

ServletContext      :适合共享数据.

* 生命周期:

    * 服务器启动的时候创建.

    * 服务器关闭的时候销毁.

* 作用范围:

    * 整个web应用.

HttpSession         :私有的数据.登录用户的信息.

* 生命周期:

    * 服务器端第一次调用getSession()方法时候.才会创建一个session对象.

    * session销毁三种情况:

        *session过期:默认过期时间30分钟.

        * 非正常关闭服务器:(正常关闭服务器序列化到硬盘)

        * 调用session.invalidate();

* 作用范围:

    * 多次请求(一次会话)

HttpServletRequest :

* 生命周期:

    * 客户端向服务器发送请求的时候,服务器创建一个请求对象.

    * 服务器对这次请求作出响应之后.请求对象就会被销毁.

* 作用范围:

    * 一次请求




猜你喜欢

转载自blog.csdn.net/YaoChung/article/details/80782247