zoukankan      html  css  js  c++  java
  • 状态管理

    1、状态管理
      (1)什么是状态管理
    将客户端(浏览器)与服务器之间多次交互当做一个整体来看待,并且将交互所涉及的数据保存下来。
    (2)如何进行状态管理
      第一类方案:将状态保存在客户端(浏览器),
      比如cookie技术。
      第二类方案:将状态保存在服务器端,
      比如session技术。


    Cookie*
      (1)什么是cookie?
      浏览器访问服务器时,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这些数据临时保存下来;当浏览器再次访问服务器时,会将之前保存的数据以cookie消息头的方式发送给服务器。
    (2)如何创建cookie?
      Cookie cookie =
        new Cookie(String name,String value);
      response.addCookie(cookie);
    (3)如何查询cookie
      //如果没有cookie,返回null
      Cookie[] request.getCookies();
      String cookie.getName();
      String cookie.getValue();
    (4)编码问题
      cookie的值如果是中文,需要将其转换成
      ascii字符。
      String URLEncoder.encode(String str,String code);

      String URLDecoder.decode(String str,String code);

    (5)生存时间
      cookie.setMaxAge(int seconds);
    注意:
      seconds:秒
      seconds > 0: 浏览器会将cookie保存在硬盘上,如果超过指定的时间,浏览器会删除该cookie。seconds < 0: 默认值,浏览器会将cookie保存在内存里面,如果浏览器关闭,cookie会被删除。seconds = 0: 删除cookie
      比如,要删除一个名称为username的cookie
      Cookie c = new Cookie("username","");
      c.setMaxAge(0);
      response.addCookie(c);
    (6)cookie的路径问题
      a,什么是cookie路径问题?
      浏览器在向服务器的某个地址发请求时,会比较cookie的路径是否与要访问的地址匹配,只有匹配的cookie,才会发送给服务器。
    b,匹配规则
      只有当要访问的地址是cookie的路径或者是其子路径时,浏览器才会将对应的cookie发送给服务器。
    c,cookie的默认的路径
      cookie的默认的路径等于创建该cookie的组件的路径。
    d, 可以调用 cookie.setPath(String path)来修改
    默认的路径。
      一般调用 cookie.setPath("/appname");
      cookie的路径: /web07/app1

    (7)cookie的限制
      a, cookie可以被浏览器禁止。
      b, cookie能够保存的数据大小有限制(4k左右),
      并且浏览器最多能够保存的cookie的数量也有限制(大约是300)。
      c, cookie不安全。
      d,cookie只能够保存字符串。

    Session*

    session
    (1)session是什么?
      浏览器访问服务器时,服务器会创建一个特殊的对象(session对象,该对象有一个唯一的id号,称之为sessionId),接下来服务器在默认情况下,会使用cookie机制将sessionId发送给浏览器,浏览器会将sessionId保存下来(内存);当浏览器再次访问服务器时,浏览器会将sessionId发送给服务器,服务器依据sessionId就可以找到之前所创建的session对象。
    (2) 如何获得一个session对象?
      a,方式一:
      HttpSession session = request.getSession();
      等价于request.getSession(true)。
    b,方式二:
      HttpSession session =
          request.getSession(boolean flag);
      当flag为true:
        服务器会查看请求当中是否有sessionId,如果没有,则创建一个session对象;如果有sessionId,服务器会依据sessionId查找对应的session对象,如果找到,则返回,
      如果找不到,则创建一个新的session对象。

      当flag为false:
      服务器会查看请求当中是否有sessionId,如果没有,返回null; 如果有sessionId,服务器会依据sessionId查找对应的session对象,如果找到,则返回,如果找不到,返回null。
    (3)HttpSession接口提供的一些常用方法
      a, String getId();
      b, session.setAttribute(String name,Object value);
      //如果name对应的值不存在,返回null。
      Object getAttribute(String name);
      //解除绑订
      removeAttribute(String name);
    (4)session的超时
      a,什么是session的超时?
      服务器会将一些空闲时间过长的session对象
      删除掉。服务器缺省的超时限制是30分钟。
      b,修改超时的时间
        方式一:改服务器的配置文件,比如,
            可以修改tomat的web.xml文件(confweb.xml)
            <session-config>
                <session-timeout>30</session-timeout>
            </session-config>
        以上配置也可以放到某个应用的web.xml文件当中。
        方式二:
          setMaxInactiveInterval(int seconds);
     (5) 立即删除session
          session.invalidate();

    走在一起是缘分,在一起走是幸福; 在一起走是缘分,走在一起是幸福
  • 相关阅读:
    双向链表循环
    双向链表的删除操作
    双向链表的插入操作
    双向链表的结构
    双向链表的删除操作
    双向链表循环
    OD使用教程17 调试篇17
    OD使用教程17 调试篇17
    双向链表的结构
    独生子女证办理
  • 原文地址:https://www.cnblogs.com/tarena/p/3620181.html
Copyright © 2011-2022 走看看