Servlet 中Cookie介绍

2021-12-30 0 By admin

Http是无状态的,但Cookie会话技术就可以解决这个问题。
当浏览器访问服务器时,服务器给浏览器颁发一个Cookie里面记录了SessionId,当浏览器再次访问该服务器时就会带上对应的Cookie,这样服务器就会认识你拉。
一个网站可以有多个cookie,每个cookie就是键值对加上必要的信息 eg:过期时间等。

一、构造函数

Cookie(java.lang.String name, java.lang.String value)

二、常见方法

  1. String getName()
  2. String getValue()
  3. void setValue(java.lang.String newValue)
  4. int getMaxAge()
  5. void setSecure(true) // https才带上
  6. void setMaxAge(int expiry) // 负数本次会有有效,0代表删除,因无对应方法,本地也删除,默认-1
  7. String getPath()
  8. void setPath() // 设置资源可以访问的地址,默认是整个页面可以使用,设置之后只有指定path才能使用
  9. String getDomain()
  10. void setDomain(java.lang.String pattern) // 设置域

三、常见操作

// 设置response的编码
response.setContentType("text/html;charset=UTF-8");
// 实例化一个Cookie,注意导包是导入javax.servlet.http.Cookie,这个包在tomcat下
// URLEncoder在java.net包下,单参构造函数已废弃,中文属于Unicode编码四字节,英文ASCII两字节,需要转码,与早期打印机相关
Cookie cookie = new Cookie("name", URLEncoder.encode("我爱中国", "UTF-8"));
// 设置过期时间,单位为秒,-1有效到浏览器关闭
cookie.setMaxAge(1000);
// 设置额外二级域
cookie.setDomain("a.com");
// 响应头添加set-cookie
response.addCookie(cookie);
// 设置路径,一般cookie整个站点都可以用,但也可以只限制该地址可用
//cookie.setPath("/ServletConfigTest");
/*************************************/
// 返回包含所有对象的数组
Cookie[] cookies = request.getCookies();
for(Cookie cookieLoop : cookies){
	String name = cookieLoop.getName();
	String value = URLDecoder.decode(cookieLoop.getValue(), "UTF-8");
	System.out.println(name + "----" + value);
}