cookie的机制是:从客户端(浏览器)发送请求到服务器,然后服务器把接受的信息回写到客户端,这个信息在客户端跟服务器之间进行交互。
下面是一个创建cookie的小案例
//如何创建cookie package com.oliver.learn; import javax.servlet.http.*; import java.io.*; public class TestCookie1 extends HttpServlet{ //处理Get请求 public void doGet(HttpServletRequest req,HttpServletResponse res){ //异常处理 //处理中文乱码 res.setContentType("text/html;charset=gbk"); try { PrintWriter pw= res.getWriter(); //当用户访问该servlet时将信息创建到cookie中 //1.现在服务器端创建一个cookie Cookie mycookie = new Cookie("color","red"); //2.该cookie存在的时间 mycookie.setMaxAge(30); //3.将cookie写回到客户端 res.addCookie(mycookie); pw.println("cookie已经创建!请到c盘相应路径下查看"); pw.println(""); } catch (IOException e) { e.printStackTrace(); } } }
cookie存储在C盘的路径为:C:UsersAdministratorAppDataRoamingMicrosoftWindowsCookies,Administrator根据自己的实际情况修改。
效果如下:
如何读取cookie呢?
//如何读取cookie package com.oliver.learn; import javax.servlet.http.*; import java.io.*; public class GetCookie1 extends HttpServlet{ //处理Get请求 public void doGet(HttpServletRequest req,HttpServletResponse res){ try{ res.setContentType("text/html;charset=gbk"); PrintWriter pw=res.getWriter(); //从客户端获取cookie信息 Cookie [] allcookie=req.getCookies(); int i=0; //如果cookie不为空。。。 if(allcookie!=null){ //从中取出cookie for(i=0;i<allcookie.length;i++){ //依次取出 Cookie temp=allcookie[i]; //判断一下 if(temp.getName().equals("color")){ String val=temp.getValue(); pw.println(val); break; } } if(allcookie.length==i){ pw.println("cookie过期"); } }else{ pw.println("cookie已经过期或者不存在color这个cookie!"); } } catch (IOException e) { e.printStackTrace(); } } }
如何去删除cookie?
//如何删除cookie package com.oliver.learn; import javax.servlet.http.*; import java.io.*; public class DeleteCookie1 extends HttpServlet{ //处理Get请求 public void doGet(HttpServletRequest req,HttpServletResponse res){ try{ res.setContentType("text/html;charset=gbk"); PrintWriter pw=res.getWriter(); //从客户端获取cookie信息 Cookie [] allcookie=req.getCookies(); int i=0; //如果cookie不为空。。。 if(allcookie!=null){ //从中取出cookie for(i=0;i<allcookie.length;i++){ //依次取出 Cookie temp=allcookie[i]; //判断一下 if(temp.getName().equals("color")){ temp.setMaxAge(0); pw.println("cookie已经删除"); break; } } if(allcookie.length==i){ pw.println("cookie过期"); } }else{ pw.println("cookie已经过期或者不存在color这个cookie!"); } } catch (IOException e) { e.printStackTrace(); } } }
表明cookie已经删除,此时去C盘中不存在cookie文件的。