zoukankan      html  css  js  c++  java
  • Cookie

    获取浏览器中发送过来的Cookie信息     Cookie[] cookies = request.getCookies();   没有Cookie时,返回null

    只有调用addCookie方法时,Cookie信息才会真正返回到浏览器,仅建立Cookie对象是不会返回的,由于Cookie信息是在HTTP消息头中发送的,因此使用时要先设置所有的消息头个Cookie信息,然后才通过输出流返回消息体数据。

    Cookie存在的问题:数据由浏览器存储,浏览器是否支持该机制,用户是否禁止了该机制,都关系着会话跟踪的正常运行,对客户端依赖太大;

      每次请求响应时都要将Cookie信息通过消息头发送,增加了网络传输量;

      某些敏感数据存放在客户端将带来一定的安全隐患。

    Session的工作原理:Servlet的Session机制将会话跟踪的数据保存在服务器端,程序可以在其中通过属性(attribute)设置需要跟踪的数据。将数据请求和数据联系起来的方式是:Web容器会为这些数据分配ID号,并使用Cookie或URL重写方式将信息关联到客户端。Servlet规定使用JSESSIONID作为关联ID的名称,由字母数字等组成的无意义字符串。

    HttpSession getSession(boolean)   指定当对象不存在时,是否要创建新对象。

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        HttpSession session = req.getSession();
        synchronized(session){
            Object value = session.getAttribute("name");
            ...
            session.setAttribute("name", value);
        }
        
    }

    可以在web.xml配置中设置session的最大空闲时间,

    <session-config>
        <session-timeout>30</session-timeout>//单位是分钟
    </session-config>

    但是像发帖之类的如果设置session-timeout为5分钟显然太短了,可以在单独设置的长点,用 void setMaxInactiveInterval(int second) 设置空闲的最长时间。

    选择session还是cookie呢?

    使用session的情况:

    只在同一web程序内,并且仅在用户在线期间维护,如进行货币交易的网站等。

    使用cookie的情况:

    对数据安全要求不高,但需要长时间维护,如某个需要登录才能访问的网站,可以将“用户已登录”的信息保存在cookie中两星期,这样用户就不必每次访问都重复登录的工作,从而方便了用户。

    实际中,Cookie和Session可以互相配合使用。

     

  • 相关阅读:
    scrapy_redis对接布隆过滤器(Bloom Filter)
    Python-Scrapy shell 带头部headers请求
    postgres数据库入门, python 操作postgres
    Windows下安装MySQL详细教程
    在读取文件中出现ufeff,解决 ufeff的问题
    scrapy中主动停止爬虫
    Scrapy 中Filtered offsite request to 'www.sohu.com':报错的解决方法
    win10系统谷歌插件此扩展程序可能已损坏的解决方法
    如何将已经安装从chrome扩展程序导出备份为.CRX文件?
    PAC模式和全局模式的区别
  • 原文地址:https://www.cnblogs.com/qducn/p/6923298.html
Copyright © 2011-2022 走看看