Cookies
Cookies的问题在于用户可以通过改变其浏览器设置来拒绝接受cookies.
要使用cookies,需熟悉javax.servlet.http.Cookie类
通过传递name和value两个参数给Cookie类的构造函数来创建一个cookies
Cookie cookie = new Cookie(name,value);
创建完一个Cookie对象后,可以设置domain,path和maxAge属性,(maxAge决定cookie何时过期)。
要将cookie发送到浏览器,需要调用HttpServletResponse的addcookie方法:
httpServletResponse.addCookie(cookie);
浏览器在访问同一web服务器时,会将之前收到的cookie一并发送。
服务端若要读取浏览器提交的cookie,可以通过HttpServletRequest接口的getCookies方法返回一个Cookie数组,若没有cookie则返回null,现还没有类似于getCookieByName这样的方法来简化。
编历数组查询特定名称的cookie 示例:
Cookie[] cookies = req.getCookies();
Cookie maxRecordsCookie = null;
if (cookies != null){
for(Cookie cookie : cookies){
if(cookie.getName().equals("maxRecords")){
maxRecordsCookie = cookie;
break;
}
}
}
现在,没有直接的方法删除一个cookie,只能创建一个同名的cookie,并将maxAge属性设置为0,并添加到HttpServletResponse接口中。
//删除一个名为userName的cookie代码
Cookie cookie = new Cookie("userName","");
cookie.setMaxAge(0);
resp.addCookie(cookie);
(maxAge 可以为正数,表示此cookie从创建到过期所能存在的时间,以秒为单位,此cookie会存储到客户端电脑,以cookie文件形式保存,不论关闭浏览器或关闭电脑,直到时间到才会过期。
可以为负数,表示此cookie只是存储在浏览器内存里,只要关闭浏览器,此cookie就会消失。maxAge默认值为-1。
还可以为0,表示从客户端电脑或浏览器内存中删除此cookie。)