简介
cookie的中文意思是小甜饼,然而在互联网上的意思就完全不通了,它和食品完全没有关系.在互联网中,cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器.通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等.浏览器将cookie以key/value的形式保存到客户机的某个指定目录中.
通过cookie的getCookies()方法即可获取所有cookie对象的集合:通过cookie对象的getName()方法可以获取指定名称的cookie,通过getValue()方法即可获取cookie对象的值.另外,将一个cookie对象发送到客户端使用了response对象的addCookie()方法.
实现代码
1.创建index.jsp页面文件,在其中创建from表单,用于让用户输入信息:并且从request对象中获取cookie,判断是否含有此服务器发送过的cookie.如果没有,则说明该用户第一次访问本站,如果有,则直接将值读取出来,并赋给对应的表单,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.net.URLDecoder"%>
应用cookie跟踪用户
<%
request.setCharacterEncoding("UTF8"); //设置请求编码
response.setCharacterEncoding("UTF8"); //设置相应编码
String welcome = "第一次访问";
String[] info = new String[] { "", "", "" }; //定义字符串数组
Cookie[] cook = request.getCookies(); //获取所有的cookie对象
if (cook != null) {
for (int i = 0; i < cook.length; i++) { //循环遍历cookie对象
if (cook[i].getName().equals("mrsoft")) { //获取指定名称的cookie
String cvalue = URLDecoder.decode(cook[i].getValue());
//将cookie对象进行编码转换,避免乱码问题
info = cvalue.split("#"); //将获取的cookie值进行拆分
welcome = ",欢迎回来!";
}
}
}
%>
<%
String name = info[0]; //页面显示内容.
%>
<%=name + welcome%>
2.創建show.jsp頁面文件,在該頁面中通過request对象将用户输入的表单信息提取出来;创建一个cookie对象,并通过response对象的addCookie()方法将其发送到客户端.代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.net.URLEncoder"%>>
创建cookie对象,发送到客户端 <%
request.setCharacterEncoding("UTF8"); //设置请求编码,避免乱码.
response.setCharacterEncoding("UTF8"); //设置相应编码,避免乱码
String name = request.getParameter("name"); //获取请求页面参数
String birthday = request.getParameter("birthday");
String mail = request.getParameter("mail");
Cookie myCook = new Cookie("mrsoft", URLEncoder.encode(name + "#"
+ birthday + "#" + mail));//创建cookie对象
myCook.setMaxAge(60 * 60 * 24 * 365);//设置cookie有效期.
response.addCookie(myCook); //将cookie发送至客户端
%>
表单提交成功!
- 姓名:<%=name%>
- 生日:<%=birthday%>
- 邮箱地址:<%=mail%>
- 返回