Microsoft PowerPoint - 08-Session-Tracking-Chinese.ppt

Similar documents
Microsoft PowerPoint - 02-Servlet-Basics-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 07-Cookies-Chinese.ppt

Microsoft PowerPoint - 04-Request-Headers-Chinese.ppt

Microsoft PowerPoint - 03-Form-Data-Chinese.ppt

Microsoft PowerPoint - 10-JSP-Scripting-Elements-Chinese.ppt

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

Servlet

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

基于CDIO一体化理念的课程教学大纲设计

设计模式 Design Patterns

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Microsoft PowerPoint - 06-Response-Headers-Chinese.ppt

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

AUCWA0501p00A.indd

Microsoft PowerPoint - 09-JSP-Intro-Chinese.ppt

untitled

附件2

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

untitled

第十一届“21世纪杯”全国中小学生英语演讲比赛

EJB-Programming-4-cn.doc

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

EJB-Programming-3.PDF

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

spc

2007年刊2.pdf

ok.pdf

约 伯 记 : 约 伯 记 : 惟 有 我 一 人 逃 脱, 来 报 信 给 你 他 还 说 话 的 时 候, 又 有 人 来 说 : 你 的 儿 女 正 在 他 们 长 兄 的 家 里 吃 饭 喝 酒, 不 料, 有 狂 风 从 旷 野 刮 来, 击 打 房 屋 的 四 角, 房 屋 倒 塌 在

加 拉 太 书 :8 2 加 拉 太 书 2:4 8 过 了 三 年, 才 上 耶 路 撒 冷 去 见 矶 法, 和 他 同 住 了 十 五 天 9 至 于 别 的 使 徒, 除 了 主 的 兄 弟 雅 各, 我 都 没 有 看 见 20 我 写 给 你 们 的 不 是 谎 话, 这 是 我 在 神

untitled

Microsoft PowerPoint - 15-Expression-Language-Chinese.ppt

Microsoft PowerPoint - 11-page-Directive-Chinese.ppt

(CIP) Web /,. :, ISBN X.W T P393.4 CIP (2004) Web ( ) ( / ) : * 787

Guava学习之Resources

诚浩证券咨询早报

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Microsoft Word 杨局长在2015年度全市卫生工作会议上的讲话.doc

院讯第十七期.doc

北京民办教育信息

(7月专刊)闵行卫生计生动态2016年第11期_s_.docx

中 央 警 察 大 學 九 十 八 年 警 佐 班 第 二 十 九 期 ( 第 二 類 ) 入 學 考 試 憲 法 題 解 壹 單 一 選 擇 題 : (B) 總 統 依 憲 法 之 規 定, 行 使 締 結 條 約 之 權 關 於 憲 法 所 稱 之 條 約, 以 下 敘 述 何 者 錯 誤?(A

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

JavaIO.PDF

untitled

1.5招募说明书(草案)

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

特 别 提 示 一 依 据 中 华 人 们 共 和 国 证 券 法 ( 以 下 简 称 证 券 法 ) 上 市 公 司 收 购 管 理 办 法 ( 以 下 简 称 收 购 办 法 ) 公 开 发 行 证 券 的 公 司 信 息 披 露 内 容 与 格 式 准 则 第 15 号 权 益 变 动 报 告

HK 08/ HK 09/ HK 03/ HK 01/ HK 05/ HK 05/ HK 05/

HK 05/ HK 08/ HK 11/ HK 03/ HK 09/ HK 03/ HK 09/

HK 11/ HK 01/ HK 07/ HK 07/ HK 08/ HK 03/ HK 11/

chp6.ppt

第一章

学 院 人 才 培 养 分 项 自 评 报 告 结 果 汇 总 表 主 要 评 估 指 标 关 键 评 估 要 素 自 评 等 级 1.1 学 校 事 业 发 展 规 划 合 格 1. 领 导 作 用 1.2 办 学 目 标 与 定 位 合 格 1.3 对 人 才 培 养 重 视 程 度 合 格 1

電機工程系認可證照清單 /7/1

强迫症毁灭天才

大连软~1

Microsoft Word - 第4章 Servlet开发—教学设计.doc

设计模式 Design Patterns

万 法 归 宗 :20 跟 随 守 正, 就 是 好, 反 正 能 捞 钱 就 是 好 万 法 归 宗 :13 今 天 我 知 道 要 收 回 去, 为 什 么, 看 看 东 方 财 富 和 乐 视 就 知 道 了, 要 有 说 法 了, 下 一

xueshu004.doc

Microsoft Word - 01.DOC

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Microsoft Word - PHP7Ch01.docx

Microsoft Word - Functional_Notes_3.90_CN.doc

实验六 JSP/Servlet

Microsoft Word G...doc

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new


jsp

Java

untitled

PowerPoint Presentation

使用MapReduce读取XML文件

JSP基础编程

Microsoft Word 样章.dot

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

XXXXXXXX

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

ch_code_infoaccess

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

Chn 116 Neh.d.01.nis

Microsoft Word - Broker.doc

Chinese Trauma Simplified - iPad pdf

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Partition Key: 字 符 串 类 型, 表 示 当 前 Entity 的 分 区 信 息 这 个 Property 对 于 Table Service 自 动 纵 向 和 横 向 扩 展 至 关 重 要 Row Key: 字 符 串 类 型, 在 给 定 Partition Key 的

ebook193-1

Microsoft Word 级第二专业学士学位培养计划.doc

TopTest_Adminstrator.doc

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

untitled

第十一届“21世纪杯”全国中小学生英语演讲比赛

近四年网络工程专业培养方案.doc

Transcription:

2004 Marty Hall 会话跟踪 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com Available in English, Chinese (simplified and traditional script), and 12 other languages 议程 从零开始实现会话跟踪 使用基本的会话跟踪 了解会话跟踪 API 区分服务器会话和浏览器会话 URL 编码 不可变对象和可变对象的存储 跟踪用户的访问计数 累计用户的购物 购物车的实现 构建在线商店 3 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

会话跟踪和电子商务 Why session tracking? 当客户在在线商店中向他们的购物车中添加商品时, 服务器如何才能知道购物车中已经有什么商品了呢? 当客户决定结账时, 服务器如何能够确定客户对应之前创建的哪个购物车呢? Dilbert used with permission of United Syndicates Inc. 4 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 进行会话跟踪 :cookie 思想 : 把 cookie 与服务器上的数据关联起来 String sessionid = makeuniquestring(); HashMap sessioninfo = new HashMap(); HashMap globaltable = findtablestoringsessions(); globaltable.put(sessionid, sessioninfo); Cookie sessioncookie = new Cookie("JSESSIONID", sessionid); sessioncookie.setpath("/"); response.addcookie(sessioncookie); 接下来要做的是 : 提取出存储会话标识符的 cookie 为 cookie 设置合适的过期时间 将散列表与每个请求关联起来 生成唯一的会话标识符 5 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

进行会话跟踪 :URL 重写 思想 客户程序在每个 URL 的尾部添加一些额外的数据来标识会话 服务器将这个标识符与它所存储的有关会话的数据关联起来 例如,http://host/path/file.html;jsessionid=1234 优点 cookie 被禁用或者根本不支持的情况下依旧能够工作 缺点 必须对所有指向您的网站的 URL 进行编码 所有页面必须动态生成 不能使用预先记录下来的 URL 进行访问, 或者从其他 网站链接进行访问 6 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 进行会话跟踪 : 隐藏的表单域 思想 : <INPUT TYPE="HIDDEN" NAME="session" VALUE="..."> 优点 cookie 被禁用或者根本不支持的情况下依旧能够工作 缺点 涉及许多冗长的处理工作 所有的页面必须是表单提交之后的结果 7 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

Java 的会话跟踪 会话对象生存于服务器上 会话自动通过 cookie 或 URL 重写与客户关联起来 使用 request.getsession 来得到会话 后台 : 系统检查 cookie 或附加在 URL 上的额外信息, 看看是否与之前存储的会话对象的键相匹配 如果匹配, 它返回该对象, 如果不匹配, 则创建新的对象, 指定一个 cookie 或 URL 信息作为它的键, 并返回新创建的会话对象 类散列表机制允许我们将任何对象存储到会话中 setattribute 存储值 getattribute 读取值 8 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 会话跟踪基础 访问会话对象 调用 request.getsession 获取 HttpSession 对象 这是一个与用户相关联的散列表 查找与会话相关联的信息 调用 HttpSession 对象的 getattribute, 将返回的值转换成合适的类型, 要注意检查结果是否为 null 将信息存入会话 使用 setattribute 给出相应的键和值 废弃会话数据 调用 removeattribute 废弃指定的值 调用 invalidate 废弃整个会话 调用 logout 将客户从 Web/ 应用服务器注销 9 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

会话跟踪基础 : 示例代码 HttpSession session = request.getsession(); SomeClass value = (SomeClass)session.getAttribute("someID"); if (value == null) { value = new SomeClass(...); session.setattribute("someid", value); dosomethingwith(value); 如果被修改的值为同一对象,( 在对值做出修改后 ) 不需要再次调用 setattribute 但是, 如果值是不可变的, 那么修改后的值将会是新对象的引用, 我们必须再次调用 setattribute 10 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 如果服务器使用 URL 重写有哪些变化? 会话跟踪代码 : 没有变动 生成链接到同一网站的超链接的代码 : 将 URL 传给 response.encodeurl 处理 如果服务器使用 cookie, 它原封不动地返回 URL 如果服务器使用 URL 重写, 它将会话信息附加到 URL 上 例如 : String url = "order-page.html"; url = response.encodeurl(url); sendredirect 到自己网站的代码 : 将 URL 传递给 response.encoderedirecturl 11 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

HttpSession 的方法 getattribute 从会话对象中提取出一个之前存储的值 如果没有找到与给定名称相关联的值, 则返回 null setattribute 把值与名称关联起来 更改的监控 : 让值实现 HttpSessionBindingListener removeattribute 移除与名称关联的值 getattributenames 返回会话中所有属性的名称 getid 返回惟一的标识符 12 JSP/servlet/Struts/JSF training: http://www.coreservlets.com HttpSession 的方法 ( 续 ) isnew 确定会话对于客户 ( 不是针对页面 ) 来说是否为新创建的 getcreationtime 返回会话初次创建的时间 getlastaccessedtime 返回客户端最近一次发送会话的时间 getmaxinactiveinterval, setmaxinactiveinterval 取得或设置在未被访问的情况下多长时间应该将会话置为无效 invalidate 废弃当前的会话 logout 废弃与用户相关联的所有会话 13 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

显示客户访问计数的 servlet public class ShowSession extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); HttpSession session = request.getsession(); String heading; Integer accesscount = (Integer)session.getAttribute("accessCount"); if (accesscount == null) { accesscount = new Integer(0); heading = "Welcome, Newcomer"; else { heading = "Welcome Back"; accesscount = new Integer(accessCount.intValue() + 1); session.setattribute("accesscount", accesscount); 14 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 显示客户访问计数的 servlet ( 续 ) PrintWriter out = response.getwriter(); out.println (doctype + "<HTML>\n" + "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<CENTER>\n" + "<H1>" + heading + "</H1>\n" + "<H2>Information on Your Session:</H2>\n" + "<TABLE BORDER=1>\n" + "<TR BGCOLOR=\"#FFAD00\">\n" + " <TH>Info Type<TH>Value\n" + " <TD>Number of Previous Accesses\n" + " <TD>" + accesscount + "\n" + "</TABLE>\n" + "</CENTER></BODY></HTML>"); 15 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

显示客户访问计数的 servlet ( 结果 1) 16 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 显示客户访问计数的 servlet ( 结果 2) 17 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

累积用户数据的列表 public class ShowItems extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getsession(); ArrayList previousitems = (ArrayList)session.getAttribute("previousItems"); if (previousitems == null) { previousitems = new ArrayList(); session.setattribute("previousitems", previousitems); 18 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 累积用户数据的列表 ( 续 ) String newitem = request.getparameter("newitem"); PrintWriter out = response.getwriter(); synchronized(previousitems) { if (newitem!= null) { previousitems.add(newitem); if (previousitems.size() == 0) { out.println("<i>no items</i>"); else { out.println("<ul>"); for(int i=0; i<previousitems.size(); i++) { out.println("<li>" + (String)previousItems.get(i)); out.println("</ul>"); out.println("</body></html>"); 19 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

累积用户数据的列表 ( 前端 ) 20 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 累积用户数据的列表 ( 结果 ) 21 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

在线书店 会话跟踪代码和简单示例中所使用的代码相同 购物车类相对复杂 用唯一的分类 ID 来标识每个商品 在购物车中并不重复出现同一商品 相反, 每个条目拥有一个关联的计数 如果计数到达 0, 则从购物车中删除该商品 页面根据含有书籍描述的对象自动构建 22 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 在线书店 23 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

在线书店 24 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 小结 会话并不跨网络传递 传递的只是唯一标识符 获取会话 request.getsession 从会话中提取数据 session.getattribute 进行类型转换, 并注意检查结果是否为 null 将数据存入会话 session.setattribute 25 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

2004 Marty Hall 问题? JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 26 JSP and Servlet Books from Sun Press: http://www.coreservlets.com Available in English, Chinese (simplified and traditional script), and 12 other languages