在JSP中使用Cookie


cookie是存储在客户端用户计算机中的一小块信息,通常以名称/值形式的字符串进行存储。
web服务器在下次访问时通过cookie标识用户。

每次用户访问启用了cookie的网站时,web服务器在响应web浏览器时都会将额外的数据添加到HTTP头中。
下次用户再次访问同一站点时,web浏览器会在HTTP请求头中向web服务器发送这个cookie。

当然用户也可以在web浏览器中禁用cookie。

JSP提供了javax.servlet.http.Cookie类API来使用cookie。

服务端发送cookie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@page import="javax.servlet.http.Cookie"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>JSP 设置 Cookie</title>
</head>
<body>
<%
Cookie cookie = new Cookie("ClientID","JSP jiaocheng theitroad.");
cookie.setMaxAge(3600);
response.addCookie(cookie);
%>
</body>
</html>

我们创建了一个新的cookie。
并设置cookie的过期时间为3600秒。 如果没有设置,则当用户关闭web浏览器时,cookie将会被删除。
最后,将cookie添加到响应http头中。
此外,我们还可以使用setDomain()和setPath()等方法限制能有效读取cookie的doamin和URL路径。

服务端读取cookie

要从客户端的HTTP请求中读取cookie,首先调用请求对象requestgetCookies()方法。此方法将返回在请求头中的cookie列表,然后你就可以遍历所有cookie。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@page import="javax.servlet.http.Cookie"%>
<html>
<head>
<title>JSP 读取 Cookie</title>
</head>
<body>
<%
Cookie[] list = request.getCookies();
if(list != null){
for(int i = 0; i < list.length;i++){
out.println(list[i].getName() + ":" + list[i].getPath());
}
}
%>
</body>
</html>

删除 cookie

如果想删除已经发送到web浏览器的cookie, 你可以使用setMaxAge()方法重新把cookie对象的过期时间设置为0。

例如,删除客户端的所有的cookie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@page import="javax.servlet.http.Cookie"%>
<html>
<head>
<title>Removing existing cookie</title>
</head>
<body>
<%
Cookie[] list = request.getCookies();
if (list != null) {
for (int i = 0; i < list.length; i++) {
list[i].setMaxAge(0);
out.println(list[i].getName() + " cookie 已删除 ");
}
}
%>
</body>
</html>


原文链接:https://codingdict.com/