• Cookie与Session


    Cookie

    1.COOKIE机制

       1)Cookie的基本特点

         Cookie保存在客户端

         只能保存字符串对象,不能保存对象类型

         需要客户端浏览器的支持:客户端可以不支持,浏览器用户可能会禁用Cookie

       2)采用Cookie需要解决的问题

         Cookie的创建

           通常是在服务器端创建的(当然也可以通过javascript来创建)

           服务器通过在http的响应头加上特殊的指示,那么浏览器在读取这个指示后就会生成相应的cookie了

         Cookie存放的内容:业务信息("key","value")

           浏览器是如何通过Cookie和服务器通信?

           通过请求与响应,cookie在服务器和客户端之间传递

           每次请求和响应都把cookie信息加载到响应头中;依靠cookie的key传递。

    2.jsp中的cookie中存放中文时候的问题 
    jsp中的cookie中时不支持的中文的,所以在里面放入中文时首先要对中文内容进行编码,然后再放入, 而取出的时候也是先对其进行解码,然后在取出.
    首先是建立cookie和编码的过程,在这一部中用到了一个包 java.net.URLEncoder具体代码如下:
        String text=URLEncoder.encode("第一个编写的cookie","utf-8"); //对中文内容进行编码,注意英文和字母不会进行编码    
          Cookie cook=new Cookie("aaa",text.toString());
          cook.setMaxAge(30*60);//规定cookie的存活时间
          response.addCookie(cook);//将建立的cookie对象放入到response中在之后可以被request获取。

     获取cookie的过程 ,在这个过程中用到了一个包 java.net.URLDecoder 具体的实现代码如下:     

        Cookie [] cookie=request.getCookies();//获取所有的cookie

          for(Cookie cok:cookies){
            String content=URLDecoder.decode(cok.getValue());//对得到的coolie中的值进行解码
            out.println(content);//输出编码后的cookie的内容
            out.println(request.getName());//输出得到的cookie的名字

           }

    * cookie的value可以设置多少个字符:4kb

    Session

    服务器在服务器端创建一个内存区域,用来存放当前用户的所有信息,通过cookie关联(前提:必须使用cookie)

       每次客户端发送请求,服务断都检查是否含有JSessionId。

       如果有,则根据sessionId检索出session并处理;如果没有,则创建一个session,并绑定一个不重复的sessionId。

    1)基本特点

    u  状态信息保存在服务器端。这意味着安全性更高

    u  通过类似与Hashtable的数据结构来保存 //?

    u  能支持任何类型的对象(session中可含有多个对象) //?

    2)保存会话id的技术

         Cookie

            这是默认的方式,在客户端与服务器端传递JSeesionId

            缺点:客户端可能禁用Cookie(可以用到TagLib代替此缺点?)

         表单隐藏字段

            在被传递回客户端之前,在 form 里面加入一个hidden域,设置JSeesionId:

            <input type=hidden name=jsessionid value="3948E432F90932A549D34532EE2394" />

         URL重写

            直接在URL后附加上session id的信息

  • 相关阅读:
    UVA 1386 Cellular Automaton
    ZOJ 3331 Process the Tasks
    CodeForces 650B Image Preview
    CodeForces 650A Watchmen
    CodeForces 651B Beautiful Paintings
    CodeForces 651A Joysticks
    HUST 1601 Shepherd
    HUST 1602 Substring
    HUST 1600 Lucky Numbers
    POJ 3991 Seinfeld
  • 原文地址:https://www.cnblogs.com/ylfeiu/p/3601251.html
Copyright © 2020-2023  润新知