response存进cookie中的数据request为何获取不到cookie?
1.方法:
设置cookie后利用response添加cookie,响应给浏览器,当下次访问服务器是,request携带cookie到服务器,使用 request.getCookies();得到cookie
2.关于cookie的置值:
Cookie cookie = new Cookie("name","value");
cookie.setMaxAge(1);
cookie.setPath("/");
response.addCookie(cookie);
2.1.第一个参数是cookie的名字,第二个参数是cookie的值,如果值是中文,要使用URLEncoder.encode("","")进行编码:他的第一个参数是value,第二个参数是:编码方式
2.2.cookie的属性设置:
2.2.1.因为不是所有的cookie都能够被其他的servlet访问,所以要设置访问的路径权限;cookie.setPath("");默认值是项目路径下;里面的路径是以项目名+要被访问的 url-pattern的绝对路经;
2.2.2.设置cookie的存在时间,cookie.setMaxAge(secn);参数是秒;默认值是-1,即:关闭浏览器时就清除cookie,当设置为0的时候:创建完cookie,使用后马上就 删除,因为时间到了,又因为,cookie没有清除方法,所以设置为 0,就相当于清除方法,当设置时间大于0,当时间到达后就会自动删除
取值:
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
String name = cookie.getName();//cookie 名字
String path = cookie.getPath(); //cookie 访问的路径
String value = cookie.getValue(); //cookie 值
int maxAge = cookie.getMaxAge(); //cookie 过期时间
String domain = cookie.getDomain();//可以访问此cookie的域名
boolean secure = cookie.getSecure(); //是否只能通过https来传递此条cookie
}
3.注意事项:
cookie只能保存少量的数据,大约4K;
cookie可以被客户禁用,所以使用应该注意
cookie安全性比较低,敏感信息不要放在其中,而且注意要加密
cookie只能存储字符串
cookie的数量有限制