Servlet与JSP核心编程 ---- 7

第八章 cookie管理

 

8.1

• 思想

– servlet发送简单的名称和值到客户程序。

– 客户程序在访问同一站点(或同一域,依cookie设置

的不同而定)时将名称和值原样返回。

• cookie的典型应用

– 在电子商务会话中标识用户

• 针对这项任务servlet拥有专门的高层API

– 避免存储用户名和密码

– 对站点进行定制

– 定向广告

 

8.2 与cookie相关的一些问题

• 问题在于隐私,不是安全。

– 服务器能够记住您之前的动作。

– 如果您给出自己的个人信息,服务器能够将这些信息

与您之前的动作关联起来。

– 多个服务器能够通过提供协作服务的第三方,如

doubleclick.net,共享cookie信息。

– 设计欠考虑的网站直接将敏感的信息,如信用卡号码

,存储在cookie中。

– JavaScript的bug能够使敌对网站窃取cookie (老浏览器)

• servlet作者应该遵守下面这些法则

– 如果cookie对于您的任务并非至关重要,则要避免在

cookie被禁用时servlet完全不能工作。

– 不要将敏感的信息存储在cookie中。

 

8.4 cookie 的发送和接收

1.向客户程序发送cookie

• 创建Cookie对象。

– 调用Cookie的构造函数,给出cookie的名称和cookie的

值,二者都是字符串。

Cookie c = new Cookie("userID", "a1234");
 

 

• 设置最大时效。

– 如果要告诉浏览器将cookie存储到磁盘上,而非仅仅

保存在内存中,使用setMaxAge (参数为秒数)。

c.setMaxAge(60*60*24*7); // One week
 写道
创建cookie对象后,将cookie发送到客户程序之前,一般应该调用setMaxAge方法。
  

 

• 将Cookie放入到HTTP响应中

– 使用response.addCookie。

– 如果忘记这一步,那么不会有任何cookie被发送到浏

览器!

response.addCookie(c);

创建和操作Cookie对象对客户应用程序没有任何影响。必须显式地调用response.setCookie将cookie发送到客户端。

 

sample

Cookie userCookie = new Cookie("user", "uid1234");
userCookie.setMaxAge(60*60*24*365); // Store cookie for 1 year
response.addCookie(userCookie);
 

2.从客户端读取cookie

• 调用request.getCookies

– 这会得到Cookie对象组成的数组。

• 在这个数组中循环,调用每个对象的getName,直到找

到想要的cookie为止。

– 根据应用程序的具体情况使用这个值(getValue)。

String cookieName = "userID";
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for(int i=0; i<cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName())) {
doSomethingWith(cookie.getValue());
}
}
}
 

8.5 使用cookie检测初访者

错误方法:

Cookie[] cookies = request.getCookies();
if (cookies == null) {
doStuffForNewbie(); // Correct.
} else {
doStuffForReturnVisitor(); // Incorrect.
}
 

the right way:

package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Servlet that says "Welcome aboard" to first-time
* visitors and "Welcome back" to repeat visitors.
* Also see RepeatVisitor2 for variation that uses
* cookie utilities from later in this chapter.
*/
public class RepeatVisitor extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
boolean newbie = true;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for(int i=0; i<cookies.length; i++) {
Cookie c = cookies[i];
if ((c.getName().equals("repeatVisitor")) &&
// Could omit test and treat cookie name as a flag
(c.getValue().equals("yes"))) {
newbie = false;
break;
}
}
}
String title;
if (newbie) {
Cookie returnVisitorCookie =
new Cookie("repeatVisitor", "yes");
returnVisitorCookie.setMaxAge(60*60*24*365); // 1 year
response.addCookie(returnVisitorCookie);
title = "Welcome Aboard";
} else {
title = "Welcome Back";
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
"</BODY></HTML>");
}
}

 

 

JSP初学者用书 很不错的一本书 第1章 servletjsp技术概述 1.1 servlet的功用 1.2 要动态构建网页的原因 1.3 servlet代码初探 1.4 servlet相对于“传统”cgi的优点 1.5 jsp的作用 第1部分 servlet技术 第2章 服务器的安装和配置 2.1 下载和安装java软件开发工具包 2.2 为桌面计算机下载服务器 2.3 服务器的配置 2.4 配置apachetomcat 2.5 配置macromediajrun 2.6 配置cauchoresin 2.7 建立开发环境 2.8 测试系统的设置 2.9 实现简化的部署方法 2.10 默认web应用的部署目录:汇总 2.11 web应用:预览 第3章 servlet基础 .3.1 servlet的基本结构 3.2 生成纯文本的servlet 3.3 生成html的servlet 3.4 servlet的打包 3.5 简单的html构建工具 3.6 servlet的生命周期 3.7 singlethreadmodel接口 3.8 servlet的调试 第4章 客户请求的处理:表单数据 4.1 表单数据的作用 4.2 在servlet中读取表单数据 4.3 示例:读取3个参数 4.4 示例:读取所有参数 4.5 参数缺失或异常时默认值的应用 4.6 过滤字符串中的html特殊字符 4.7 根据请求参数自动填充java对象:表单bean 4.8 当参数缺失或异常时重新显示输入表单 第5章 客户请求的处理:http请求报头 5.1 请求报头的读取 5.2 制作所有请求报头的表格 5.3 了解http1.1请求报头 5. 4 发送压缩web页面 5.5 区分不同的浏览器类型 5.6 依据客户的到达方式定制页面 5.7 标准cgi变量的访问 第6章 服务器响应的生成:http状态代码 6.1 状态代码的指定 6.2 http1.1状态代码 6.3 将用户重定向到浏览器相关页面的servlet 6.4 各种搜索引擎的一个前端 第7章 服务器响应的生成:htip响应报头 7.1 在servlet中设置响应报头 7.2 理解http1.1响应报头 7.3 构建excel电子表格 7.4 servlet状态的持续以及页面的自动重载 7.5 使用servlet生成jpeg图像 第8章 cookie管理 8.1 cookie的优点 8.2 cookie存在的一些问题 8.3 cookie的删除 8.4 cookie的发送和接收 8.5 使用cookie检测初访者 8.6 使用cookie属性 8.7 区分会话cookie与持续性cookie 8.8 基本的cookie实用程序 8.9 实际使用cookie实用程序 8.10 修改cookie的值:记录用户的访问计数 8.11 使用cookie记录用户的偏好 第9章 会话跟踪 9.1 会话跟踪的需求 9.2 会话跟踪基础 9.3 会话跟踪api 9.4 浏览器会话与服务器会话 9.5 对发往客户的url进行编码 9.6 显示客户访问计数的servlet 9.7 累计用户数据的列表 9.8 拥有购物车和会话跟踪功能的在线商店 第ii部分 jsp技术 第10章 jsp技术概述 10.1 对jsp的需求 10.2 jsp的好处 10.3 jsp相对于竞争技术的优势 10.4 对jsp的误解 10.5 jsp页面的安装 10.6 基本语法 第11章 用jsp脚本元素调用java代码 11.1 模板文本的创建 11.2 在jsp中调用java代码 11.3 限制jsp页面中java代码的量 11.4 jsp表达式的应用 11.5 示例:jsp表达式 11.6 servletjsp页面的对比 11.7 编写scriptlet 11.8 scriptlet示例 11.9 使用scriptlet将jsp页面的某些部分条件化 11.10 使用声明 11.11 声明的例子 11.12 使用预定义变量 11.13 jsp表达式、scriptlet和声明的比较 第12章 控制所生成的servlet的结构:jsppage指令 12.1 import属性 12.2 contenttype和pageencoding属性 12.3 条件性地生成excel电子表格 12.4 session属性 12.5 iselignored属性 12.6 buffer和autoflush属性 12.7 info属性 12.8 errorpage和iserrorpage属性 12.9 isthreadsafe属性 12.10 extends属性 12.11 language属性 12.12 指令的xml语法 第13章 在jsp页面中包含文件和applet 13.1 在请求期间包含页面:jsp:include动作 13.2 在页面转换期间包含文件:include指令 13.3 使用jsp:forward转发请求 13.4 包含使用java插件的applet 第14章 javabean组件在jsp文档中的应用 14.1 使用bean的原因 14.2 bean是什么 14.3 bean的应用:基本任务 14.4 示例:stringbean 14.5 设置bean的属性:高级技术 14.6 共享bean 14.7 共享bean的4种方式:示例 第15章 servletjsp的集成:模型—视图—控制器构架 15.1 mvc的需求 15.2 用request dispatcher实现mvc 15.3 mvc代码汇总 15.4 目的页面中相对url的解释 15.5 mvc的应用:银行账户余额 15.6 3种数据共享方式的对比 15.7 从jsp页面转发请求 15.8 包含页面 第16章 简化对java代码的访问:jsp 2.0表达式语言 16.1 应用el的驱动力 16.2 表达式语言的调用 16.3 阻止表达式语言的求值 16.4 阻止标准脚本元素的使用 16.5 访问作用域变量 16.6 访问bean的属性 16.7 访问集合 16.8 引用隐式对象 16.9 表达式语言中运算符的应用 16.10 表达式的条件求值 16.11 表达式语言其他功能概览 第ⅲ部分 支持技术 第17章 数据库访问:jdbc 17.1 jdbc应用概述 17.2 基本jdbc示例 17.3 用jdbc实用工具简化数据库访问 17.4 使用预备语句 17.5 创建可调用语句 17.6 使用数据库事务 17.7 使用orm框架将数据映射到对象 第18章 配置msaccess,mysql和oracle9i 18.1 配置microsoftaccess与jdbc的使用 18.2 mysql的安装和配置 18.3 oracle9i数据库的安装和配置 18.4 通过jdbc连接来测试数据库 18.5 建立music表 第19章 html表单的创建和处理 19.1 html表单如何传输数据 19.2 form元素 19.3 文本控件 19.4 按钮 19.5 复选框和单选按钮 19.6 组合框和列表框 19.7 文件上载控件 19.8 服务器端图像映射 19.9 隐藏域 19.10 控件组 19.11 制表次序 19.12 用于调试的web服务器 附录 服务器的组织与结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值