目录
Cookie通常用来记录客户的某些信息,比如客户的用户名及客户的喜好等
session会随浏览器关闭而失效,但Cookie会一直存放在客户端机器上,直到超出Cookie的生命期限。
设置读取Cookie示例
示例代码结构
addCookie.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Add Cookies</title>
</head>
<body>
<%
String name = request.getParameter("name");
Cookie c = new Cookie("username",name);
c.setMaxAge(24*3600);
response.addCookie(c);
%>
</body>
</html>
readCookie.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Read Cookies</title>
</head>
<body>
<%
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies){
if(c.getName().equals("username")){
out.println(c.getValue());
}
}
%>
效果:
http://127.0.0.1:8888/demo_war/cookie/basic/addCookie.jsp?name="abcdef"
总结:
创建Cookie实例,用的是response内置对象
设置Cookie的生命期限,即在多长时间内有效
向客户端写Cookie
设置的Cookie包含中文字符时
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Read Cookies</title>
</head>
<body>
<%
Cookie cookie = new Cookie("cnName",java.net.URLEncoder.encode("孙悟空","gbk"));
cookie.setMaxAge(24*3600);
response.addCookie(cookie);
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies){
if(c.getName().equals("cnName")){
out.println(java.net.URLDecoder.decode(c.getValue(),"gbk"));
}
}
%>
</body>
</html>
效果
总结:
cookie默认情况是不允许出现中文字符,如果要用中文,需要编码之后设置。