servlet中的cookie

image

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:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies,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?

//如何删除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文件的。

posted @ 2015-11-24 20:42  OLIVER_QIN  阅读(496)  评论(0编辑  收藏  举报