JavaWeb——会话及会话管理技术

学习JavaWeb第五天

一、会话概述
(1)概述:会话是浏览器和服务器之间的多次请求和响应

也就是说,从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止的这段时间内容产生的多次请求和响应,合起来叫做浏览器和服务器之间的一次会话

(2)为什么要使用会话技术呢?
实际上会话问题解决的还是客户端与服务器之间的通信问题,通过一些会话技术,可以将每个用户的数据以例如cookie/session的形式存储,方便以后用户访问web资源的时候使用

假定场景:A和B两人在某个网上购物商场登陆账号后,A买了一个HHKB的键盘,而B则购买了一把民谣吉他,这些信息都会被保存下来
用途是:保存账户信息,登录时询问日后是否自动登录,或者根据之前浏览,购买过的商品,分析用户喜欢什么类型的商品,做出精准推送
那么能不能用我们之前学过的 HttpServletRequest 对象和 ServletContext 对象来保存这些数据呢?答案是否定的

不能用 HttpServletRequest 的原因:我们的一次会话中,存在多次请求和响应,而浏览器客户端的每一次请求都会产生一个 HttpServletRequest 对象,它只会保存此次请求的信息,例如放入购物车与购买付款是不同的请求,很显然数据没有得到很好的保存处理

不能用 ServletContext 的原因:ServletContext对象是被整个web应用所共享的,将数据都存到这里,无疑会无法区分具体信息的归属.

二、cookie对象
1、什么是cookie:
Cookie是一种会话管理技术,它是用来保存会话过程中产生的数据,然后在浏览器和服务器交互时,
会使用cookie里面保存的数据。
注意:首次访问服务器,浏览器不会携带cookie到服务端。

2、Cookie常用的API
构造方法:
得到cookie对象:Cookie cookie = new Cookie(String key,String value);
(1)Cookie类常用的方法:
(2)回写(响应)cookie到浏览器端: response.addCookie(cookie);
(3)得到cookie的名称 :String key= cookie.getName(),
得到cookie的值: String value =cookie.getValue();
(4)给cookie设置生命时长: setMaxAge(int sr);
比如:cookie.setMaxAge(606024*7),说明cookie能存活7天;
cookie分类: 第一类:会话级别cookie,浏览器关闭,cookie对象就销毁了。 第二类:持久化cookie,通过setMaxAge这个方法来设置。
(5)给cookie设置路径,设置域名:
setPath(路径的url),setDomain(域名);
比如:域名就是服务器名称,比如说:www.baidu.com
(6)得到cookie: Cookie[] cookies = request.getCookies();

3、显示用户的上次访问时间:
实现步骤:
(1)判断是否是首次访问:
如果cookie里面有时间,说明就不是第一次访问。
(2)如果是第一次访问,创建cookie,保存时间,把这个cookie回写到浏览器端。
(3)如果不是第一次访问,把时间回写到浏览器,记住当前时间,把时间保存cookie里面。

三、Session对象
1、什么是session
session是一种会话管理技术,session用来保存会话过程中的数据,保存的数据存储到服务器端。
session原理:基于cookie实现的,更确切的说是基于会话级别的cookie实现的。
2、HttpSession API
session常用方法:
(1)得到session的id(JESSIONID对应的值): getId();
(2)设置session的生命时长:setMaxInactiveInterval(int interval)
(3)销毁session: invalidate();
得到session: HttpSession session = getSession();
session域对象:作用范围一次完整的会话(包含多个请求)
存值: setAttribute(String key,Object obj);
取值: Object obj =getAttribute(String key);
移除: removeAttribute(String key);
总结域对象:request域对象 session域对象 servletContext域对象,作用范围以次变大。
request域对象:作用范围一次请求,通常和转发操作配合使用
session域对象:作用范围一次会话,通常和重定向操作配合使用
servletContext域对象:作用范围整个项目,和重定向、转发操作都可以配合使用。
3、Session 超时管理
session对象是有生命时长的,它的默认存活时间是30分钟。
具体配置找tomcat软件的conf目录下的web.xml文件,如下:
立即销毁session对象:invalidate();
四、练习
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值