本章博客讲解:
1、Cookie基本用法演示
2、演示Cookie的访问权限
3、演示Cookie的删除
4、利用Cookie显示用户上次登录的时间
5、利用Cookie技术显示用户最近浏览的若干个图片
6、测试火狐浏览器到底支持多少个Cookie和一个Cookie最大为多大
1、Cookie基本用法演示
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <h1>演示Cookie技术</h1> <a href="CookieDemo">Cookie基本用法演示</a><br/> </body> </html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>CookieDemo</servlet-name> <servlet-class>cn.hncu.servlets.CookieDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>CookieDemo</servlet-name> <url-pattern>/CookieDemo</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
CookieDemo.java:
package cn.hncu.servlets; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CookieDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //向客户端写cookie Random r = new Random(); int n =r.nextInt(100); String name = "jack";//cookie的格式:key=value Cookie c = new Cookie("name", name+n); c.setMaxAge(60*60);//设置过期时间,以秒为单位 c.setPath( request.getContextPath() );//该路径是: /项目名 //Cookie机制中,是通过path来控制权限的。只有<url-pattern>和该path相同或是它的子路径的servlet才能够访问该cookie //如果把一个cookie的path设为项目根目录,那么该项目下的所有servlet都能够访问它 response.addCookie(c); //这一段演示cookie带中文 String str = "我带中文"; str = URLEncoder.encode(str, "utf-8");//中文设置编码!!!urlencode编码 Cookie cStr = new Cookie("str", str); //如果不设置setMaxAge,则浏览器一关闭就过期 cStr.setPath("/"); response.addCookie(cStr); //读取客户端发过来的cookie Cookie cs[] = request.getCookies();//读取cookie if(cs!=null){//防范一下 for(Cookie cc:cs){ String name2 = cc.getName(); String val = cc.getValue(); val = URLDecoder.decode(val, "utf-8");//原来是怎么编码的,就怎么解码! 中文解码,ascii是原样的! out.print(name2+"="+val+"<br/>"); } } out.print("Cook保存成功!"); } }
演示结果:
第一次点击时!session下次讲!tomcat自动生成发给客户端的!
再次进入时!
name+n–因为后面的n一直在随机生成,这个点击总是显示的是前一个的信息!