您现在的位置:首页 >> 前端 >> 内容

Cookie详解

时间:2017/9/20 10:32:00 点击:

  核心提示:Cookie 是一种客户端缓存技术 , 长度一般规定不超过4kb, 有存储在内存(进程)的Cookie (浏览器一关闭就丢失数据) 和 存储在硬盘的Cookie (可持久化存储)Cookie是通过do...

Cookie 是一种客户端缓存技术 , 长度一般规定不超过4kb, 有存储在内存(进程)的Cookie (浏览器一关闭就丢失数据) 和 存储在硬盘的Cookie (可持久化存储)
Cookie是通过domain+path++name 来区分的

Cookie的一般使用使用

? Cookie cookie = new Cookie(name, value) ; 键值对形式

? cookie.setPath(“作用范围”);

? cookie.setMaxage(“秒”); 正数为有效时长 负数为临时cookie 0 删除cookie

? cookie.setHttpOnly(true); 将无法通过js脚本读取到cookie信息,一定程度提高了安全性,tomcat服务器设置的jsessionid就是设置了httponly的

? response.addCookie(cookie);

3.Cookie中的中文乱码

?   Cookie中无法存储中文,这时我们需要对中文信息进行编解码操作,列:

?   //生成Cookie, 注意编码(使cookie可以传中文)

    Cookie cookie = null ;
    try {
        cookie = new Cookie(key, URLEncoder.encode(value, "utf-8")) ;
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        System.out.println("cookie生成错误!!!");
    }
    cookie.setHttpOnly(true);
    //设置cook的有效时间和有效范围
    cookie.setMaxAge(60*60);
    cookie.setPath(request.getContextPath());
    //返回cookie
    response.addCookie(cookie);

? //获得所有的cookie

Cookie[] cookies = request.getCookies();
//遍历cookies数组,找到我们需要的那个cookie
String name = "";
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if (cookie.getName().equals("userName")) {
            name = URLDecoder.decode(cookie.getValue(), "utf-8");
        }
    }
}

4.jsessionid

? 通常我们第一次登录服务器,服务器会给我们生成一个cookie,存入jsessionid,同

时在服务器中选取一块内存,生成session来保存我们的信息,这个session与cookie使

用同一jsessionid,再将这个cookie返回给客户端,这样当我们再次登陆时只要cookie

和session还能正常使用,客户端会把包涵jsessionid的cookie发给服务器,找到对应存

储我们信息的session.

Tags:CO OO OK KI 
作者:网络 来源:qq_3531874