zoukankan      html  css  js  c++  java
  • 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的信息

  • 相关阅读:
    JavaWeb_Tomcat_Maven!
    java异常!
    JavaWeb获取web.xml初始参数!getInitParameter
    JavaWeb文件下载!
    Java抽象接口!
    JavaWeb初识Servlet!
    关于HashMap以对象作为Key的实现及踩坑
    浅析.Net下的多线程编程(2)
    获取浏览器分辨率
    浅析.Net下的多线程编程(1)
  • 原文地址:https://www.cnblogs.com/ylfeiu/p/3601251.html
Copyright © 2011-2022 走看看