• Session&Cookie


    Session & Cookie

    Cookie

     1)什么是Cookie?
         服务器为了识别用户身份而临时存放在浏览器端的少量数据。
        2)工作原理
            浏览器访问服务器时,服务器将一些数据以set-cookie消息头
            的形式发送给浏览器,浏览器会将这些数据临时保存下来;
            当浏览器再次访问服务器时,会将这些数据以cookie消息头的
            形式发送给服务器。
        3)添加Cookie
            Cookie c = new Cookie(String name,String value);
            注:  name: cookie名称
                 value: cookie值
            response.addCookie(c);
        4)读取Cookie
            Cookie[] request.getCookies();
            注: 有可能返回null。
            String cookie.getName();
            String cookie.getValue();

     5)编码问题
            a. cookie只能存放合法的ascii字符。
            b. 如果要存放中文,可以将中文转换成合法的ascii字符形式。
                String URLEncoder.encode(String str,String charset);
                String URLDecoder.decode(String str,String charset);

    注: 建议在添加cookie时,都统一编码(使用以上方法对保存的数    据进行处理)。
        6)生存时间问题
            cookie.setMaxAge(int seconds)
            a.单位是秒。
            b.sencods > 0  浏览器会将cookie保存在硬盘上,超过指定的
                        时间,cookie失效(删除)。
              sencods < 0  默认值(浏览器会将cookie保存在内存里,浏览器            关闭,cookie会被删除)。
              sencods = 0 删除cookie,比如要删除一个名称为city的cookie
                        Cookie c = new Cookie("city","");
                        c.setMaxAge(0);
                        response.addCookie(c);
        7)cookie的路径问题
            a.什么是cookie的路径问题?
            浏览器访问服务器上的某个地址时,会比较请求地址是否符合
            cookie的路径要求,只有符合要求的cookie才会被发送。
            b.cookie的默认路径
                等于添加该cookie的web组件的路径。
                比如 /servlet-day06/biz01/addCookie.jsp添加了一个
                cookie,则该cookie的默认路径就是 "/servletday06/biz01"
            c.匹配规则
                要访问的地址必须是cookie的路径或者其子路径。
                比如,cookie的路径是    "/servletday06/biz01",则
                /servletday06/findCookie1.jsp   no
                /servletday06/biz01/findCookie2.jsp  yes
                /servletday06/biz01/aaa/findCookie3.jsp  yes
            d.设置cookie路径
                cookie.setPath(String path);
        8)cookie的限制
            a.cookie不安全。(对于敏感数据,要加密处理)    。
            b.cookie可以被用户禁止。
            c.cookie只能保存少量数据。(大约4k左右)。
            d.浏览器端保存的cookie的数量也有限制。(大约几百个)
            e.cookie只能保存字符串。

    (4)session (会话)
        1)什么是session?
             服务器端为了保存状态而创建的一个特殊的对象。
        2)工作原理
                浏览器访问服务器时,服务器创建一个特殊对象session(
            该对象有一个唯一的id,称之为sessionId),服务器会将
            sessionId以cookie的形式发送给浏览器;
                当浏览器再次访问服务器时,会将sessionId发送过来,
            服务器端可以利用这个session找到对应的session对象。
        3)如何获得session对象?
            方式一
                HttpSession session = 
                    request.getSession(boolean flag);
                注:
                    当flag为true时,先查看请求当中有没有sessionId,
                如果没有,则创建一个session对象;
                如果有,依据sessionId查找对应的session对象,如果
                找到了则返回,找不到,会创建一个新的session对象。
                    当flag为false时,先查看请求当中有没有sessionId,
                如果没有,返回null;
                如果有,依据sessionId查找对应的session对象,如果
                找到了则返回,找不到,返回null。
            方式二
                HttpSession session = 
                    request.getSession();
                等价于 request.getSession(true)。

        4)几个方法
            String  getId()
            setAttribute(String name,Object obj)
            Object getAttribute(String name);
            //解除绑订
            removeAttribute(String name);


        5)session超时
            a.什么是session超时?
            服务器会将空闲时间过长的session对象删除掉。
            注:
                这样做的好处,是为了节省内存空间的占用    。
                服务器默认的超时限制一般是30分钟。
            b.可以修改web.xml配置,设置超时时间限制。
                <session-config>
                    <session-timeout>30</session-timeout>
                </session-config>
            c.setMaxInactiveInterval(int seconds)
                设置两次请求之间的最大间隔时间,如果超过了这个时间,
                则服务器会销毁session对象。
        6)删除session
            invalidate()

  • 相关阅读:
    转:ASP.NET中的SESSION实现与操作方法
    SQLHelper
    【Shell】使用Shell脚本发布项目
    【JFinal】关于Model的继承
    【Chrome】离线版下载
    【IDEA 2016.3.4】License Server
    【Windows】修改C盘下用户名
    【MySql】查询数据库中所有表及列的信息
    maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
    rabbitMQ
  • 原文地址:https://www.cnblogs.com/Mr-Kenson/p/7715822.html
Copyright © 2020-2023  润新知