会话技术之Cookie技术
1.Cookie的创建
1)使用原生的Http响应头的方式设置Cookie
// 设置 Cookie
response
.addHeader(
"Set-Cookie"
,
"name=dream"
);
response
.addHeader(
"Set-Cookie"
,
"next=12"
);
//获取 Cookie
Cookie[]
cookies
=
request
.getCookies();
if
(
cookies
!=
null
) {
for
(Cookie
cookie
:
cookies
) {
response
.getWriter().write(
cookie
.getName() +
"===="
+
cookie
.getValue());
}
}
2)使用Java EE封装的Cookie对象
Cookie
cookie
=
new
Cookie(
"lastTime"
,
new
Date().getTime() +
""
);
2.Cookie的访问控制
// Cookie 的访问控制
//1.控制Cookie的到期时间
cookie
.setMaxAge(60 * 60 * 24 * 30);
// 设置Cookie 到期时间为 30 天后 (MaxAge接受一个秒值)
//2.控制 Cookie 的访问路径 --- 访问那些站点需要携带该Cookie
cookie
.setPath(
request
.getContextPath() +
"/CookieTest02"
);
//3.指定描述cookie用途的注释。
cookie
.setComment(
"use display last time."
);
//4.指示浏览器是否只应使用安全协议(如HTTPS或SSL)发送Cookie。
cookie
.setSecure(
false
);
// 如果设置为 True, 则普通的HTTP请求将不会携带该 Cookie
3.添加 Cookie
// 添加 Cookie
response
.addCookie(
cookie
);
response
.addCookie(
num
);
Note:
向response添加Cookie时报 IllegalArgumentException错误需要将其中包含的空格、逗号等替换或者转义.
4.读取 Cookie
Cookie
lastTime
=
null
;
Cookie[]
cookies
=
request
.getCookies();
if
(
cookies
!=
null
) {
// Cookie 不一定存在, 如果不存在cookies 就为 null, 对null进行增强for循环会出错
for
(Cookie
c
:
cookies
) {
if
(
"lastTime"
.equals(
c
.getName())) {
lastTime
=
c
;
break
;
}
}
}
if
(
lastTime
!=
null
) {
// 找到所需要的 Cookie
response
.getWriter().write(
"您上次的访问时间是:"
+
new
Date(Long.
parseLong
(
lastTime
.getValue())));
}
5. 项目练习
写两个Servlet, 一个用以读取所有Item并显示到页面, 另一个用以显示每一个Item的detail,并发送Cookie以达到在第一个页面上不仅显示所有Item还可以显示3个用户浏览的记录。