您的位置:首页 > 其它

servlet学习笔记6——cookie的使用

2010-11-20 05:58 543 查看
Servlet第五讲

(一)Cookie的讲解和使用
服务器在客户端保存用户的信息
cookie
-----------------------------------
|名字(String) | 值(String) |
-----------------------------------
| | |
-----------------------------------
| | |
-----------------------------------
| | |
-----------------------------------
1.Cookie有点像一张表,分两列,一个是名字,一个是值,数据类

型都是String
2.如何创建一个Cookie(在服务器端创建的)
Cookie c=new Cookie(String name,String val);
3.如何将一个Cookie添加到客户端
response.addCookie(c);
4.如何读取cookie(从客户端读到服务器)
request.getCookies();

其他说明:
1.可以通过IE-工具-internet选项-隐私-高级来启用或是禁用cookie
2.由于cookie的信息是保存在客户端的因此安全性不高
3.cookie信息的生命周期可以在创建时设置(比如30s),从创建

那一刻起,就开始计时,到时该cookie信息就无效了(如果30秒后


4.cookie对b/s编程非常重要

应用方向:
1.保存用户名、密码,使其在一定时间内不用重新登录
2.记录用户访问网站的喜好
3.网站的个性化

(二)Cookie和Session的比较
1.存在位置
cookie保存在客户端,sesseion保存在服务器端
2.安全性
比较而言,cookie的安全性比sesseion要弱
3.网络传输量
cookie通过网络在客户端与服务器端传输。
而session保存在服务器端,不需要传输
4.生命周期(20分钟为例)
(1)cookie的生命周期是累计的,从创建时,就开始计时,20分

钟后cookie生命周期结束,cookie就无效
(2)sesseion的生命周期是间隔的,从创建时,开始计时如在20

分钟,没有访问过sesseion,那么session信息无效,如果在20分

钟内,比如19分钟时,访问过sesseion,那么,它的生命周期将重

新开始计算
(3)另外,关机会造成sesseion生命周期结束,但是对cookie没

有任何影响

参考示例:

CookieTest1:(创建cookie)

//创建cookie
package com.tsinghua;

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

public class CookieTest1 extends HttpServlet {
public void process(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();

// 当用户访问该servlet时,就将信息创建到该用户的cookie中
// 1.现在服务器端创建一个cookie
Cookie myCookie=new Cookie("color1","red");
// 2.该cookie存在时间
// 如果你不设置存在时间,那么该cookie将不会保存
myCookie.setMaxAge(30);//按秒计算
// 3.将该cookie写会到客户端
res.addCookie(myCookie);
pw.println("已经创建了cookie");
} catch (Exception ex) {
ex.printStackTrace();
}
}

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
process(req, res);
}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
process(req, res);
}
}


CookieTest2:(读取cookie)

//读取cookie
package com.tsinghua;

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

public class CookieTest2 extends HttpServlet {
public void process(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//从客户端得到所有的cookie信息
Cookie[] allCookies=req.getCookies();
int i=0;
//如果allCookies不为空
if(allCookies!=null){
for(i=0;i<allCookies.length;i++){//从中取出cookie
//依次取出
Cookie temp=allCookies[i];
if(temp.getName().equals("color1")){
//得到cookie的值
String val=temp.getValue();
pw.println("color1="+val);
break;
}
}
if(allCookies.length==i){
pw.println("cookie过期");
}
}else{
pw.println("不存在color这个cookie/或是过期了");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
process(req, res);
}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
process(req, res);
}
}


CookieTest3:(删除cookie)

//删除cookie
package com.tsinghua;

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

public class CookieTest3 extends HttpServlet {
public void process(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
// 从客户端得到所有的cookie信息
Cookie[] allCookies = req.getCookies();
int i = 0;
// 如果allCookies不为空
if (allCookies != null) {
for (i = 0; i < allCookies.length; i++) {// 从中取出cookie
// 依次取出
Cookie temp = allCookies[i];
if (temp.getName().equals("color1")) {
// 将该cookie删除
temp.setMaxAge(0);
pw.println("删除了color这个cookie");
break;
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
process(req, res);
}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
process(req, res);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: