通过cookie的getCookies()方法可获取所有cookie对象的集合;通过getName()方法可以获取指定的名称的cookie;通过getValue()方法获取到cookie对象的值。另外,将一个cookie对象发送到客户端,使用response对象的addCookie()方法。
下面通过cookie保存并读取用户登录信息的例子加深一下理解。
(1)创建index.jsp文件。在改文件中,首先获取cookie对象的集合,如果集合不为空,就通过for循环遍历cookie集合,从中找出设置的cookie(这里设置为lee),并从该cookie中提取出用户名和注册时间,再根据获取的结果显示不同的提示信息。
index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<%@ page language=
"java"
contentType=
"text/html; charset=utf-8"
pageEncoding=
"utf-8"
%>
<%
@page
import
=
"java.net.URLDecoder"
%>
<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
>
<title>通过cookie保存并读取用户登陆信息</title>
</head>
<body>
<%
Cookie[] cookies=request.getCookies();
//从request中获得cookie对象的集合
String user=
""
;
//登录用户
String date=
""
;
//注册时间
if
(cookies!=
null
){
for
(
int
i=
0
;i<cookies.length;i++){
if
(cookies[i].getName().equals(
"lee"
)){
user=URLDecoder.decode(cookies[i].getValue().split(
"#"
)[
0
]);
//获取用户名
date=cookies[i].getValue().split(
"#"
)[
1
];
//获取注册时间
}
}
}
if
(
""
.equals(user)&&
""
.equals(date)){
//如果没有注册
%>
游客你好,欢迎你初次光临!
<form action=
"deal.jsp"
method=
"post"
>
请输入姓名:<input name=
"user"
type=
"text"
value=
""
>
<input type=
"submit"
value=
"确定"
>
</form>
<%
}
else
{
//已经注册
%>
欢迎[<b><%=user %><b>]再次光临<br>
你注册的时间是:<%=date %>
<%
}
%>
</body>
</html>
|
(2)编写deal.jsp文件,用来向cookie中写入注册信息。
deal.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<%@ page language=
"java"
contentType=
"text/html; charset=utf-8"
pageEncoding=
"utf-8"
%>
<%
@page
import
=
"java.net.URLEncoder"
%>
<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
>
<title>写入cookie</title>
</head>
<body>
<%
request.setCharacterEncoding(
"utf-8"
);
//设置请求的编译为utf-8
String user=URLEncoder.encode(request.getParameter(
"user"
),
"utf-8"
);
//获取用户名
Cookie cookie=
new
Cookie(
"lee"
,user+
"#"
+
new
java.util.Date().toLocaleString());
//创建并实例化cookie对象
cookie.setMaxAge(
60
*
60
*
24
*
30
);
//设置cookie有效期为30天
response.addCookie(cookie);
%>
<script type=
"text/javascript"
>window.location.href=
"index.jsp"
</script>
</body>
</html>
|
技巧:在向cookie中保存的信息中如果包括中文,需要调用java.net.URLEncoder类的encode()方法保存到cookie中的信息进行编码;在读取内容时,需要应用到java.net.URLDecoder类的decode()方法进行解码。这样就可以成功地向cookie中写入中文。
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1351339,如需转载请自行联系原作者