本文共 2277 字,大约阅读时间需要 7 分钟。
Cookie用于网站记录客户的信息,如我们登录网站时可以将用户名和密码存储在浏览器的客户端。网站能够根据Cookie得到用户的信息。Session在浏览器关闭之后就会失效,Cookie会存储在浏览器的客户端,除非超出cookie生命周期。
因为cookie不是jsp的内置对象,所以使用cookie前需要先创建cookie,jsp的9大内置对象不需创建可直接使用。
1、 首先向浏览器中写入cookie。(代码均经过测试,测试环境myeclipse2010)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>向客户端添加cookie</title>
</head>
<body>
姓名:<%=request.getParameter("username")%><br>
年龄:<%=request.getParameter("age")%>
<%
String username=request.getParameter("username");
String age=request.getParameter("age");
//创建一个新的cookie对象co1
Cookie co1=new Cookie("username",username);
//创建一个新的cookie对象co2
Cookie co2=new Cookie("age",age);
//设置cookie的有效期
co1.setMaxAge(60*60);
co2.setMaxAge(60*60);
//向客户端增加cookie1和cookie2
response.addCookie(co1);
response.addCookie(co2);
%>
</body>
</html>
在浏览器地址栏中输入以下地址(建议使用谷歌浏览器,注意乱码,默认为ISO)参数可自行设定。
2、通过request.getCookies()方法采用for-each循环获取客户端存储的Cookie
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>获取一组cookie</title>
</head>
<body>
<%
//以数组的形式获取一组cookie
Cookie[] cookies = request.getCookies();
//for-each循环遍历所有cookie
for(Cookie c:cookies)
{
out.println(c.getName()+""+c.getValue()+"<br>");
}
%>
</body>
</html>
默认情况下,cookie值不准出现中文值(这也就是我们的username为啥一般是英文),存储中文时,我们可以可以先编码,读取Cookie时再解码。编码(java.net.URLEncoder)解码(java.net.URLDecoder)
编码代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>cookie中存储中文</title>
</head>
<body>
<%
Cookie co3 = new Cookie("chinesename",java.net.URLEncoder.encode("太原理工大学","gbk"));
co3.setMaxAge(60*60);
response.addCookie(co3);
%>
</body>
</html>
解码代码:
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>得到中文cookie</title>
</head>
<body>
<%
Cookie[] cookies=request.getCookies();
for(Cookie c:cookies)
{
if(c.getName().equals("chinesename"))
{
out.println(java.net.URLDecoder.decode(c.getValue()));
}
}
%>
</body>
</html>
先访问编码页面,再访问解码页面。执行结果:
注:所有运行截图上传无效,可关注weibo唐虞之道查看截图。
转载地址:http://oorai.baihongyu.com/