javaWeb 基础知识

时间:2022-11-06 23:31:08

cookie  深度解析:  http://blog.****.net/ghsau/article/details/20395681

cookie 的作用:

利用存在客户端本地的缓存让无状态的服务器也能识别客户端;

cookie 

既可以被服务器都写 也可以的js脚本读写; 但如果设置了HttpOnly属性; 脚本将无法读写;

javax.servlet.http.Cookie  这个类可以设置 设置cookie的名称、内容、作用路径、作用域、协议、生存周期,but不能设置HttpOnly属性 ; 
但可以通过 响应头来 设置 httpOnly属性: response.setHeader("Set-Cookie", "cookiename=value;Path=/;Domain=domainvalue;Max-Age=seconds;HttpOnly"); 
java Cookie 的创建:
cookie的创建:
    Cookie cookie = new Cookie("test_key", "test_value");
cookie.setPath("/");
   cookie.setDomain(".ghsau.com");
response.addCookie(cookie);

cookie的获取:

    // 输出cookies,过滤掉JSESSIONID
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(Cookie cookie : cookies) {
if(cookie.getName().equals("JSESSIONID")) continue;
out.println(cookie.getName() + "-" + cookie.getValue());
}
}

JavaScript  Cookie的创建:

function setCookie(c_name, obj, expiredays) {
var value = JSON.stringify(obj); // 如果穿进来是个对象;先将对象转换成json字符串;
var exdate = new Date();
if(expiredays == null ) expiredays = 31; //默认cookie保存 31天;
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" + escape(value) + ";expires=" + exdate.toGMTString();
}

cookie 与 域名的关系:

1: cookie默认情况下作用域为当前域名。

2; cookie作用域为父级域名时,所有子级域名都可以得到该cookie,

3: cookie不能跨二级域名设置。

cookie 揭秘:  http://www.cnblogs.com/zhangziqiu/archive/2009/08/06/cookies-javascript-aspnet.html 

cookie 是如何传递的?

(1):页面 请求 ;  在请求一个页面的Http头中,会将属于此页面的本地Cookies信息加在Http头中 ;

Cookie: My.Common.TestCookieInfo=Pkid=999&TestValue=aaabbbcccdddeee 

(2) 服务器响应: 如果页面写入Cookies信息,则返回的Http如下:

Set-Cookie: My.Common.TestCookieInfo=Pkid=999&TestValue=aaabbbcccdddeee; expires=Fri, 07-Aug-2009 03:40:59 GMT; path=/ 

cookie 的限制: 

1: 大小: 4096 字节;

2: 个数: 每个站点 20个; 最多约 300个 ;

cookie的存储格式:

1) js: document.cookie 是一个字符串 
2) java: 是一个数组;
Cookie[] cookies = request.getCookies(); 
cookie的内容编码格式:
Cookies的值中可以保存除了“;”以外的标点符号。但是不能保存汉字。保存汉字会出现乱码。