Servlet学习笔记——第四天

Servlet学习笔记—第四天

Servlet笔记 第四天

一. 复习

在这里插入图片描述
在这里插入图片描述

二、用户信息追踪

1. 概念:

​ 在通信过程中,保存记录用户一些重要的业务步骤操作 涉及的数据

2. 手段

1) cookie : 在客户端浏览器中保存用户状态数据
2)HttpSession:在服务器端保存用户状态数据

三. Cookie

1. 概念

1)服务器写到浏览器上的一小段String,由name和value两部分组成(不支持中文)
2)当浏览器访问服务器时,服务器可以读取浏览器上曾经自己写过的cookie
3)cookie有存活时间(可以设置)

2. 操作cookie的API

1)创建cookie对象 — Cookie c = new Cookie( name , value );
2)写cookie — response.addCookie©;
3)读cookie — request.getCookies() --> Cookie[] 如果没有读到,返回值为null
4)设置存活时间 — cookie.setMaxAge( xxx );

​ ① 数字为正数: 表示存活多少秒

​ ② 数字为负数: 表示cookie会在浏览器关闭时被销毁

5)设置cookie的访问路经 — cookie.setPath("…");

​ 注意: http协议规定,只有处于同一路径下的程序才能访问该路径下程序写过的cookie(默认不能跨应用)

四. HttpSession

会话:client与服务器端的一次完整的通信过程(涵盖多次请求)

1. 使用【重点】

1)获取 — HttpSession session = request.getSession( boolean – true );
2)HttpSession是一个作用域,可以存放“命名属性”

​ ① 存数据 — session.setAttribute(“name”,value);

​ ② 取数据 — Object value = session.getAttribute(“name”);

​ ③ 移除数据 — session.removeAttribute(“name”);

2. session对象的特点

1)生命周期比较长

​ begin: 当client访问的程序里第一次出现request.getSession(true)代码时(懒汉式创建)

​ end: timeout关闭session(服务器会为session设置一个有效存活时间 — 默认30分钟 )

控制session的有效存活时间

​ ① 可以在tomcat的配置文件中修改tomcat产生的所有session的存活时间(统一修改)

​ tomcat — conf — web.xml

在这里插入图片描述

​ ② 可以针对某一个应用中使用的session进行修改 — 程序中通过函数调用修改

​ session.setMaxInactiveInterval( time ); time单位秒

​ ③ 主动销毁session对象 — 完成安全退出

​ session.invalidate();

在这里插入图片描述

2) 与用户相关(一个用户对应一个session对象) — 浏览器软件

​ ① 问题: 在A程序里 sesssion.setAttribute(“name”,“hehe”); client1 访问了A程序

​ 问:之后哪些程序可以通过session.getAttribute(“name”) 获取hehe数据

​ 答:只要被client1请求的程序(不论功能),就可以得到hehe数据

​ ② 原理:

​ 当client向server申请session对象时,tomcat会首先读取浏览器上的cookie,查找JSESSIONID的cookie

​ —> 没找到: tomcat会为client创建新的session,同时将session的id以cookie的形式写入浏览器

​ —> 找到:获取cookie里的session id,在内存中查找对应的session对象,返回给client使用

​ ③ 安全退出 和 关闭浏览器退出 的区别

​ 安全退出 : 直接销毁client对应的session对象,并清除浏览器上的cookie

​ 关闭浏览器退出: 存储了sessionid的cookie被销毁,再次访问时,无法提供之前session的id,tomcat为

​ client创建了新的session(原有session仍然存活30分钟)

​ 注意: 保存sessionid的cookie JSESSIONID – 32位16进制数

在这里插入图片描述

3) url重写

​ ① 如果浏览器拒绝接收cookie,则程序无法完成功能(一般不要求程序做出处理)

​ ② 如果使用response.encodeURL() 来处理跳转路径,则可以在浏览器不支持cookie的情况下,让前后两个

​ 网页使用同一个session对象

​ 方法功能: 检测浏览器是否支持cookie,支持(不做任何处理原样返回),不支持(将当前网页里的

​ sessionid拼接到地址后面 url;jsessionid=xxxxxx )

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值