java会话管理基础

上传人:飞*** 文档编号:50964364 上传时间:2018-08-11 格式:PDF 页数:18 大小:582.48KB
返回 下载 相关 举报
java会话管理基础_第1页
第1页 / 共18页
java会话管理基础_第2页
第2页 / 共18页
java会话管理基础_第3页
第3页 / 共18页
java会话管理基础_第4页
第4页 / 共18页
java会话管理基础_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《java会话管理基础》由会员分享,可在线阅读,更多相关《java会话管理基础(18页珍藏版)》请在金锄头文库上搜索。

1、会话什么是会话??会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个 web 资源,然后关闭浏览器,整个过程称之为一个会话。会话过程中要解决的一些问题??每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。?例如:多个用户点击超链接通过一个servlet各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点结帐 servlet时,结帐 servlet可以得到用户各自购买的商品为用户结帐。?提问:这些数据保存在 Request或 ServletContext中行不行?保存会话数据的两

2、种技术:Cookie ?Cookie 是客户端技术,服务器把每个用户的数据以cookie 的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web 资源时,就会带着各自的数据去。这样, web 资源处理的就是用户各自的数据了。?Session ?Session 是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session 对象,由于 session 为用户浏览器独享,所以用户在访问服务器的web 资源时,可以把各自的数据放在各自的 session 中,当用户再去访问服务器中的其它web 资源时,其它 web 资源再从用户各自的 session中

3、取出数据为用户服务。Cookie 技术Cookie API javax.servlet.http.Cookie类用于创建一个 Cookie ,response接口也中定义了一个 addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie 头字段。 同样,request接口中也定义了一个 getCookies方法,它用于获取客户端提交的 Cookie 。Cookie 类的方法:public Cookie(String name,String value) setValue与 getValue方法setMaxAge与 getMaxAge方法setPath与 getPath方法ge

4、tName方法Cookie 应用显示用户上次访问时间?Cookie.setMaxAge(7*24*60*60) ?Cookie.setPath(“/day0X”);?Cookie.setMaxAge(0)删除同名 Cookie Cookie 细节一个 Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME )和设置值(VALUE)。一个 WEB 站点可以给一个 WEB 浏览器发送多个 Cookie ,一个 WEB 浏览器也可以存储多个 WEB 站点提供的 Cookie 。浏览器一般只允许存放 300 个 Cookie ,每个站点最多存放 20 个 Cookie ,每个 Cook

5、ie 的大小限制为 4KB 。如果创建了一个 cookie ,并将他发送到浏览器,默认情况下它是一个会话级别的 cookie (即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该 cookie 存储在磁盘上,则需要使用 maxAge ,并给出一个以秒为单位的时间。将最大时效设为0 则是命令浏览器删除该 cookie 。注意,删除 cookie 时,path 必须一致,否则不会删除Cookie 应用显示用户上次浏览过的商品HttpSession 在 WEB 开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session 对象(

6、默认情况下 )。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session 中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session 中取出该用户的数据,为用户服务。Session 和 Cookie 的主要区别在于:?Cookie 是把用户的数据写给用户的浏览器。?Session 技术把用户的数据写到用户独占的session 中。Session 对象由服务器创建,开发人员可以调用request对象的 getSession方法得到 session 对象。HttpSession API 获得 Session 对象?Session session = get

7、Session(boolean flag); 获得会话 ID ?Session.getId(); 保存数据?Session.setAttribute(“name ”,Object);获取数据?Session.getAttribute(“name ”);session 注意,虽然代码相同,但不同浏览器得到的各自的数据session 实现原理疑问:服务器是如何实现一个session 为一个用户浏览器服务的?浏览器禁用 Cookie 后的 session 处理禁用 Cookie 后 servlet 共享数据导致的问题。解决方案: URL 重写?response. encodeRedirectURL(

8、java.lang.String url) ?用于对 sendRedirect 方法后的 url 地址进行重写。?response. encodeURL(java.lang.String url) ?用于对表单 action 和超链接的 url 地址进行重写附加:?session 的失效(默认30 分钟)?web.xml 文件配置 session 失效时间session 案例使用 Session 完成用户登录使用 Session 完成随机验证码用户浏览过的商品用户上次访问的时间Servlet 编程1)Servlet 生命周期(重点)构造方法:创建 servlet 对象。默认情况下,第一次访问s

9、ervlet 对象时。只调用 1 次。init 方法(有参):创建完 servlet 对象后调用。只调用1 次。注意: 会调用无参的init 方法。service 方法: servlet 提供服务的方法。每次发出请求调用。注意: request 对象 ,response 对象destroy 方法: tomcat 服务器停止或web 应用重新部署, servlet 对象销毁, destroy 方法被调用。2)ServletConfig 对象获取 servlet 的初始化参数:getInitParameter(“name “); getInitParameterNames(); 3)Servlet

10、Context对象得到 web 应用路径:context.getContextPath(); request.getContextPath(); 等价于上面的代码得到 web 应用参数:context.getInitParameter(“name“); context.getInitParameterNames(); 域对象 : context.setAttribute(“name“,Object): 保存数据context.getAttribute(“name“) 得到数据context.removeAttribue(“name“) 清除数据转发context.getRequestDispa

11、tcher(“路径“).forward(request,response); request.getRequestDispacher(“路径“).forward(request,response); 等价于上面的代码得到 web 应用中的资源文件context.getRealPath(“路径“) context.getResourceAsStream(“路径 “); 今天的目标:会话管理2. 会话管理入门2.1 生活中会话我: 小张,你会跳小苹果码?小张: 会,怎么了?我: 公司年会上要表演节目,你教教我把小张:没问题,一顿饭而已。我: OK。在这次生活中的会话中产生通话记录(会话数据)2.2

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

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

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

15、ie 的有效时间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 信息到浏览器response.addCookie

16、(cookie); 举例: set-cookie: name=eric (隐藏发送了一个 set-cookie 名称的响应头 ) 3)浏览器得到服务器发送的cookie ,然后保存在浏览器端。4)浏览器在下次访问服务器时,会带着cookie 信息举例: cookie: name=eric (隐藏带着一个叫cookie 名称的请求头 ) 5)服务器接收到浏览器带来的cookie 信息request.getCookies(); 3.4 Cookie 的细节1)void setPath(java.lang.String uri) :设置 cookie 的有效访问路径。有效路径指的是cookie 的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie 信息,否则不带cookie 信息。2)void setMaxAge(int expiry) : 设置 cookie 的有效时间。正整数:表示cookie 数据保存浏览器的缓存目录(硬盘中),数

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

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

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