对java中cookie和session的一些简介

上传人:飞*** 文档编号:51468382 上传时间:2018-08-14 格式:PDF 页数:7 大小:19.29KB
返回 下载 相关 举报
对java中cookie和session的一些简介_第1页
第1页 / 共7页
对java中cookie和session的一些简介_第2页
第2页 / 共7页
对java中cookie和session的一些简介_第3页
第3页 / 共7页
对java中cookie和session的一些简介_第4页
第4页 / 共7页
对java中cookie和session的一些简介_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《对java中cookie和session的一些简介》由会员分享,可在线阅读,更多相关《对java中cookie和session的一些简介(7页珍藏版)》请在金锄头文库上搜索。

1、1 课程回顾Servlet 编程1)Servlet 生命周期(重点)构造方法:创建 servlet 对象。默认情况下,第一次访问servlet 对象时。只调用1 次。init 方法(有参) : 创建完 servlet 对象后调用。只调用1 次。注意:会调用无参的init 方法。service 方法:servlet 提供服务的方法。每次发出请求调用。注意:request 对象,response 对象destroy 方法:tomcat 服务器停止或web 应用重新部署,servlet 对象销毁, destroy 方法被调用。2)ServletConfig 对象获取 servlet 的初始化参数:g

2、etInitParameter(“name “); getInitParameterNames(); 3)ServletContext 对象得到 web 应用路径:context.getContextPath(); request.getContextPath(); 等价于上面的代码得到 web 应用参数:context.getInitParameter(“name“); context.getInitParameterNames(); 域对象 : context.setAttribute(“name“,Object): 保存数据context.getAttribute(“name“) 得到数

3、据context.removeAttribue(“name“) 清除数据转发context.getRequestDispatcher(“ 路径 “).forward(request,response); request.getRequestDispacher(“ 路径 “).forward(request,response); 等价于上面的代码得到 web 应用中的资源文件context.getRealPath(“ 路径 “) context.getResourceAsStream(“ 路径 “); 今天的目标:会话管理/ 路径的不一样表示当前路径的相对路径,a.getAbsoluteFile

4、() 代表 java命令运行目录,java运行命令哪里?服务器启动的目录,tomcat/bin 到底在什么环境下运行,用. 在 java和 entete不一样。 Java和 tomcat的不一样,用这个方法,2. 会话管得到web 应用中的资源文件context.getRealPath(“ 路径 “) context.getResourceAsStream(“ 路径 “); 理入门2.1 生活中会话我:小张,你会跳小苹果码?小张:会,怎么了?我:公司年会上要表演节目,你教教我把小张:没问题,一顿饭而已。我:OK。 。 。 。 。 。 。 。在这次生活中的会话中产生通话记录(会话数据)2.2 软

5、件中的会话一次会话:打开浏览器- 访问一些服务器内容- 关闭浏览器登录场景:打开浏览器- 浏览到登陆页面- 输入 用户名和密码- 访问到用户主页(显示 用户名 ) 修改密码(输入原密码)修改收货地址. 问题:在此处登录会话过程中产生的数据(用户会话数据)如何保存下来呢?购物场景:打开浏览器- 浏览商品列表- 加入购物车 (把商品信息保存下来) - 关闭浏览器打开浏览器 - 直接进入购物车- 查看到上次加入购物车的商品- 下订单- 支付问题:在购物会话过程中,如何保存商品信息?会话管理:管理浏览器客户端和 服务器端之间会话过程中产生的会话数据。域对象:实现资源之间的数据共享。request 域对

6、象context 域对象登录场景:小张: 输入“张三” (保存数据:context.setAttribute(“name“,“张三 “)) - 用户主页 (显示 “张三”)小李:输入“李四”(保存数据: context.setAttribute(“name“,“李四 “) - 用户主页(显示“李四”)问题:context 是所有用户公有的资源! !会覆盖数据。小张:输入“张三” (保存数据:request.setAttribute(“name“,“张三 “))- 用户主页(显示“张三”)问题:一定要使用 转发技术 来跳转页面! ! !解决办法:可以使用session 域对象来保存会话数据! !

7、2.3 会话技术Cookie 技术:会话数据保存在浏览器客户端。Session技术:会话数据保存在服务器端。3 Cooke技术3.1 特点Cookie 技术:会话数据保存在浏览器客户端。3.2 Cookie 技术核心Cookie 类:用于存储会话数据Cookie.setValue(“”); 1)构造 Cookie 对象Cookie(java.lang.String name, java.lang.String value) 2)设置 cookie void setPath(java.lang.String uri) :设置 cookie 的有效访问路径void setMaxAge(int ex

8、piry) : 设置 cookie 的有效时间void setValue(java.lang.String newValue) :设置 cookie 的值3)发送 cookie 到浏览器端保存void response.addCookie(Cookie cookie) : 发送 cookie 4)服务器接收cookie Cookie request.getCookies() : 接收 cookie 3.3 Cookie 原理1)服务器创建cookie 对象,把会话数据存储到cookie 对象中。new Cookie(“name“,“value“); 2) 服务器发送cookie 信息到浏览器r

9、esponse.addCookie(cookie); 举例:set-cookie: name=eric (隐藏发送了一个set-cookie 名称的响应头 ) 3)浏览器得到服务器发送的cookie,然后保存在浏览器端。4)浏览器在下次访问服务器时,会带着cookie 信息举例:cookie: name=eric (隐藏带着一个叫cookie 名称的请求头) 5)服务器接收到浏览器带来的cookie 信息request.getCookies(); 3.4 Cookie 的细节保存,清除缓冲有些时候比较重要。200 :表示请求处理完成并完美返回302:表示请求需要进一步细化。404:表示客户访问

10、的资源找不到。500:表示服务器的资源发送错误。(服务器内部错误)1)void setPath(java.lang.String uri) :设置 cookie 的有效访问路径。有效路径指的是cookie 的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie 信息,否则不带cookie 信息。2)void setMaxAge(int expiry) : 设置 cookie 的有效时间。正整数:表示cookie 数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。负整数:表示cookie 数据保存浏览器的内存中。浏览器关闭cookie 就丢失了!零:表示删除同名的co

11、okie 数据3)Cookie 数据类型 只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放 300 个 Cookie,每个站点最多存放20 个 Cookie,每个 Cookie 的大小限制为4KB 。3.5 案例- 显示用户上次访问的时间3.6 案例-查看用户浏览器过的商品4 Session 技术4.1 引入Cookie 的局限:1)Cookie 只能存字符串类型。不能保存对象2)只能存非中文。3)1 个 Cookie 的容量不超过4KB。如果要保存非字符串,超过4kb 内容,只能使用session技术! !Session特点:会话数据保存在服务器端。(内存中)4

12、.2 Session 技术核心HttpSession 类:用于保存会话数据1)创建或得到session 对象HttpSession getSession() HttpSession getSession(boolean create) 2)设置 session对象void setMaxInactiveInterval(int interval) : 设置 session的有效时间void invalidate() : 销毁 session 对象java.lang.String getId() : 得到 session 编号3)保存会话数据到session 对象void setAttribute

13、(java.lang.String name, java.lang.Object value) : 保存数据java.lang.Object getAttribute(java.lang.String name) : 获取数据void removeAttribute(java.lang.String name) : 清除数据4.3 Session 原理问题:服务器能够识别不同的浏览者! !现象:前提:在哪个 session 域对象保存数据,就必须从哪个域对象取出! ! !浏览器 1:(给 s1 分配一个唯一的标记:s001,把 s001 发送给浏览器) 1)创建 session 对象,保存会话

14、数据HttpSession session = request.getSession(); -保存会话数据s1 浏览器 1 的新窗口(带着s001 的标记到服务器查询,s001-s1,返回 s1)1)得到 session 对象的会话数据HttpSession session = request.getSession(); -可以取出s1 新的浏览器1:(没有带 s001,不能返回 s1) 1)得到 session 对象的会话数据HttpSession session = request.getSession(); -不可以取出s2 浏览器 2:(没有带 s001,不能返回s1) 1)得到 se

15、ssion 对象的会话数据HttpSession session = request.getSession(); -不可以取出s3 代码解读: HttpSession session = request.getSession(); 1)第一次访问创建session 对象,给session 对象分配一个唯一的ID,叫 JSESSIONID new HttpSession(); 2)把 JSESSIONID 作为 Cookie 的值发送给浏览器保存Cookie cookie = new Cookie(“JSESSIONID“, sessionID); response.addCookie(cook

16、ie); 3)第二次访问的时候,浏览器带着JSESSIONID 的 cookie 访问服务器4)服务器得到JSESSIONID,在服务器的内存中搜索是否存放对应编号的session对象。if(找到 ) return map.get(sessionID); Map 5)如果找到对应编号的session对象,直接返回该对象6)如果找不到对应编号的session 对象,创建新的session对象,继续走1 的流程结论:通过JSESSION 的 cookie 值在服务器找session 对象! ! ! ! !4.4 Sesson 细节1)java.lang.String getId() : 得到 session 编号2)两个 getSession方法:getSession(true) / getSession() : 创建或得到session 对象。没有匹配的session 编号,自动创建新的 session对象。getSession(false): 得到 session对象。没有匹配的session编号,返回null

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号