Servlet学习:Cookie练习

什么是cookie?

服务器在客户端保存用户的信息,比如登录名、密码……就是cookie。

这些信息就像是小甜饼一样,数据量并不大,服务器端在需要的时候可以从客户端读取。

cookie可以用来做什么?

1.保存用户名、密码,在一定时间不用重新登录
2.记录用户访问网站的喜好,比如有无背景音乐、网页的背景色是什么
3.网站的个性化,比如定制网站的服务、内容
cookie使用:

1.cookie有点像一张表,分两列,一个是名字,一个是值,数据类型都是String
2.如何创建一个cookie(在服务器端创建的)
Cookie c=new Cookie(String name, String val);
3.如何将一个cookie添加到客户端
response.addCookie(c);
4。如何读取cookie(从客户端读到服务器)
request.getCookie();

Cookie练习1:创建Cookie

import javax.servlet.http.*;
import java.io.*;

public class Cookie1 extends HttpServlet{

	
	public void doGet(HttpServletRequest req,HttpServletResponse res){
		
		try {
			
			res.setContentType("text/html;charset=gbk");
			PrintWriter pw=res.getWriter();
		    //当用户访问该servlet时, 就将信息创建到该用户的cookie中
  
                      //1. 先在服务器端创建一个cookie
			Cookie myCookie=new Cookie("color1","red");
			
	             //2. 该cookie存在的时间	
       			myCookie.setMaxAge(30);
                      /如果你不设置存在时间,那么该cookie将不会保存
   
                     //3. 将该cookie写回到客户端		
    			res.addCookie(myCookie);
			
			pw.println("creat cookie");
	    }
	    catch (Exception ex) {
	    	
	    	ex.printStackTrace();
	    }				
	}
}

执行结果:

查找Cookies文件夹,确定是否将cookie写回到客户端。
Cookies文件夹位置为:C:\Documents and Settings\Administrator\Cookies
administrator为你的windows用户名

如果没有看到Cookies文件夹,则需要显示隐藏的文件夹

选择工具→文件夹选项→查看    将隐藏受保护的操作系统文件前面的复选框去掉


就可以看见Cookies文件夹了,找到生成的对应cookie

 练习2、读取Cookie

import javax.servlet.http.*;
import java.io.*;

public class Cookie2 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
   try {
	 PrintWriter pw=res.getWriter();
             //从客户端得到所有cookie信息
              Cookie[] allCookies=req.getCookies();
                //如果客户端存在cookie信息
		if(allCookies!=null)
		  {
                      //遍历所有cookie信息,找到刚刚创建的cookie 
		   for(i=0;i<allCookies.length;i++)
		     { 
		   	Cookie temp=allCookies[i];
		       if(temp.getName().equals("color1"))
		   	{
		             String val=temp.getValue();
		   	    pw.println("color1="+val);
		   	    break;
		   	}
		      }
                     //如果遍历完也没有找到,则cookie过期啦
		   if(allCookies.length==i)
		       {
		   	 pw.println("cookie time out");
		       }
		   }
		 else   //allCookies==null
		  {
		     pw.println("Don't have cookies");
		  }
	   }
	    catch (Exception ex) {
	    	
	    	ex.printStackTrace();
	    }				
	}
}

执行结果:

刷新练习1的url,产生cookie,输入练习2的url,产生结果如图所示:

30秒cookie过期之后刷新页面,产生结果如图所示:

3、删除Cookie

import javax.servlet.http.*;
import java.io.*;

public class Cookie3 extends HttpServlet{

	
	public void doGet(HttpServletRequest req,HttpServletResponse res){
		
		try {
			
		      res.setContentType("text/html;charset=gbk");
		      PrintWriter pw=res.getWriter();
		      Cookie[] allCookies=req.getCookies();
		      int i=0;
		      if(allCookies!=null)
		      {
		      	for(i=0;i<allCookies.length;i++)
		      	{    Cookie temp=allCookies[i];
		   	    if(temp.getName().equals("color1"))
		   	      {
		   		    temp.setMaxAge(0);  //为正数表示cookie保存时间,为0表示删除cookie,为负数表示不保存cookie
		      		    pw.println("delete cookie");
		      		    break;
		   	      }
		      	} 
	     	      } 
	             else
		     {
		   	pw.println("Don't have cookies");
		     }
		}
  		catch (Exception ex) {
	    	ex.printStackTrace();
	    }			
	}
}

执行结果:

Cookie的其他说明:

1.可以通过IE——工具——internet选项——隐私——高级来启用或是禁用cookie

2.由于cookie的信息是保存在客户端的,因此安全性不高

3.cookie信息的生命周期可以在创建时设置(比如30s),从创建那一时刻起,就开始计时,到时该cookie的信息就无效了



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值