Servlet学习之六cookie的用法

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

cookie可以用来保存用户名密码、记录用户喜好、记录皮肤信息。

创建cookie步骤:

1、在服务器端创建一个Cookie

Cookie c=new Cookie(String name,String val);

2、如何将一个Cookie添加到客户端

response.addCookie(c);

3、如何从客户端读取cookie到服务器

request.getCookies();


示例:

创建cookie:cookietest1.java

package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;

public class cookietest1 extends HttpServlet{
	public void doGet(HttpServletRequest req,HttpServletResponse res){
		try{
			res.setContentType("text/html;charset=gbk");
			PrintWriter pw=res.getWriter();
			
			Cookie myCookie=new Cookie("color1","red");
			myCookie.setMaxAge(30);
			
			//向服务器添加cookie
			res.addCookie(myCookie);
			
			pw.println("已经创建了cookie");
		}catch(Exception ex){
			
		}
	}
	
	public void doPost(HttpServletRequest req,HttpServletResponse res){
		this.doGet(req,res);
	}
}

获取cookie:cookietest2.java

package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;

public class cookietest2 extends HttpServlet{
	public void doGet(HttpServletRequest req,HttpServletResponse res){
		try{
			res.setContentType("text/html;charset=gbk");
			PrintWriter pw=res.getWriter();
			
			pw.println("读取cookie");
			Cookie[] allCookies=req.getCookies();//可能有多个cookie,每一个cookie都有一个对应的名字和值
			int i=0;
			
			//如果allCookies不为空
			if(allCookies!=null){
				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;
				     }
				}
				if(allCookies.length==i){
					pw.println("cookie 过期");
				}
			}else{
				pw.println("不存在color1这个cookie/或是过期了!");
			}
		}catch(Exception ex){
			
		}
	}
	
	public void doPost(HttpServletRequest req,HttpServletResponse res){
		this.doGet(req,res);
	}
}


删除cookie:cookietest3.java

package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;

public class cookietest3 extends HttpServlet{
	public void doGet(HttpServletRequest req,HttpServletResponse res){
		try{
			res.setContentType("text/html;charset=gbk");
			PrintWriter pw=res.getWriter();
			
			pw.println("读取cookie");
			Cookie[] allCookies=req.getCookies();//可能有多个cookie,每一个cookie都有一个对应的名字和值
			int i=0;
			
			//如果allCookies不为空
			if(allCookies!=null){
				for(i=0;i<allCookies.length;i++){
				     Cookie temp=allCookies[i];
				    if(temp.getName().equals("color1")){
				    	temp.setMaxAge(0);
				    	pw.println("删除了color这个cookie");
				    	break;
				    }
				}
				if(allCookies.length==i){
					pw.println("cookie 过期");
				}
			}else{
				pw.println("不存在color1这个cookie/或是过期了!");
			}
		}catch(Exception ex){
			
		}
	}
	
	public void doPost(HttpServletRequest req,HttpServletResponse res){
		this.doGet(req,res);
	}
}

cookie和session比较

(1)存在位置

(2)安全性

(3)网络传输量

cookie通过网络在客户端与服务器端传输。而session保存在服务器端,不需要传输。

(4)生命周期

cookie的生命周期是累计的,session的生命周期是间隔的。关机会造成session生命周期结束,但是对cookie没有任何影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henry_Jing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值