服务器在客户端保存用户的信息,比如登录名,密码等。就是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没有任何影响。