Cookie是在浏览器端保存用户请求的信息。
创建一个 cookie,cookie 是 servlet 发送到 Web 浏览器的少量信息,这些信息由浏览器保存,然后发送回服务器。cookie 的值可以唯一地标识客户端,因此 cookie 常用于会话管理。
一个 cookie 拥有一个名称、一个值和一些可选属性,比如注释、路径和域限定符、最大生存时间和版本号。一些 Web 浏览器在处理可选属性方面存在 bug,因此有节制地使用这些属性可提高 servlet 的互操作性。
servlet 通过使用 HttpServletResponse#addCookie
方法将 cookie 发送到浏览器,该方法将字段添加到 HTTP 响应头,以便一次一个地将 cookie 发送到浏览器。浏览器应该支持每台 Web 服务器有 20 个 cookie,总共有 300 个 cookie,并且可能将每个 cookie 的大小限定为 4 KB。
浏览器通过向 HTTP 请求头添加字段将 cookie 返回给 servlet。可使用 HttpServletRequest#getCookies
方法从请求中获取 cookie。一些 cookie 可能有相同的名称,但却有不同的路径属性。
cookie 影响使用它们的 Web 页面的缓存。
1、创建Cookie,以键值对的方式存储
Cookie cookie1 =new Cookie("username", username);//创建Cookie
cookie1.setMaxAge(30*60);//设置Cookie生命周期,以秒为单位
Cookie cookie2=new Cookie("password", password);
cookie2.setMaxAge(30*60);
response.addCookie(cookie1);//发回浏览器
response.addCookie(cookie2);
2、可以获取全部Cookie的值,按需存取
Cookie []cookies=request.getCookies();//获取所有的Cookie
String username="",password="";
if(cookies==null){
username="";
password="";
}else
for (Cookie cookie : cookies) {
if(cookie.getName().equals("username")){//寻找需要的值
username=cookie.getValue();
}else if(cookie.getName().equals("password")){
password=cookie.getValue();
}
}
3、Cookie的生命周期
Cookie存储在浏览器端,如果不进行删除,将会导致数据量越来越大。因此Cookie是有生命周期的,一定时间后Cookie会自动删除。Cookie可以通过setMaxAge()设置生存时间,如果不设置,将会在浏览器关闭的时候自动删除。将生命周期设置为0,将会立即删除Cookie
4、Cookie路径设置
Cookie路径可以通过setPath方法设置当前目录和旗下子目录servlet都获取cookie,一般setPath(“/”),表示当前项目所有目录都可以获取cookie