浏览器抓取网页(会话管理技术技术最常见的方案-上海怡健医学 )
优采云 发布时间: 2022-04-06 15:03浏览器抓取网页(会话管理技术技术最常见的方案-上海怡健医学
)
会话管理
会话概述
两方之间的通信或交互,同样在计算机中,浏览器与服务器之间的交互称为会话。
一个会话中的多个请求和响应
对话功能
在会话范围内的多个请求之间共享数据
功能:
限制页面访问(不登录无法访问后台页面)
临时存储数据并在多个请求之间共享数据
记住密码、自动登录、7天免费登录等。
生命周期
开始
会话在浏览器访问服务器的那一刻开始
结尾
当浏览器或服务器端中断时结束
注意:服务器一般是连续运行的,所以会话结束通常是浏览器关闭造成的。
会话技术
最常见的场景:数据库存储
在 cookie 中存储数据:数据由浏览器保存
将数据存储到会话:数据由服务器保存
一、 Cookie
翻译:饼干
概述
(1)一小段文字用来存放客户端
(2) 是一种客户端技术,将数据保存到客户端;因为 cookie 存储在客户端浏览器中
(3) 是维护客户端和服务器之间的状态
(4)cookie技术,不安全,请勿使用cookie存储敏感信息!如登录状态和登录信息;
(5)一些敏感数据应该存储在服务器端
常用方法
无效 setMaxAge(int e);
** 设置cookie的有效期,以秒为单位,正数为秒数后过期;负数表示浏览器关闭时cookie会被删除(有争议);零表示清除 cookie
int getMaxAge();
** 获取cookie的有效时间,以秒为单位
无效 setValue(字符串值);
** 创建cookie后,给cookie赋值
字符串 getValue();
** 获取cookie的值
字符串 getName();
** 获取 cookie 的名称
饼干[] getCookies();
** 获取cookie中的所有属性名
如何使用
(1)创建Cookie对象并绑定数据(获取服务器上的指定数据并通过cookie保存)
**Cookie cookie = new Cookie(key,value);
(2)发送 Cookie 对象(来自服务器 ---> 客户端)
** response.addCookie(cookie)
(3)获取cookies,获取数据
**Cookie[]cookies = request.getCookies()
防范措施
编码 URLEncoder.encode("string","utf-8");
解码 URLDecoder.decode("string","utf-8");
使用 Cookie
1.介绍
1.1 案例:张三和李四的会面(从头到尾)====》Client and Server
2.会话
2.1 概述:一个会话中的多个请求和响应
一次会话:浏览器第一次向服务器资源发送请求,会话建立,直到一方断开。
2.2 功能:一个会话范围内的多个请求之间共享数据
2.3 种方式:
(1)客户端会话技术:Cookies
(2)服务器端会话技术:session
3.Cookie
3.1 概述
客户端会话技术,将数据保存到客户端
3.2 快速入门
使用步骤:
(1)创建Cookie对象并绑定数据
新 Cookie(键,值);
(2)发送 Cookie 对象(来自服务器 ---> 客户端)
request.addCookie(cookie)
(3)获取cookies,获取数据
request.getCookies()
4.Cookie 详细信息
4.1 可以同时发送多个cookie吗?
** 能
** 可以创建多个 Cookie 对象,并使用响应多次调用 addCookie 方法发送 cookie。
4.2 cookie 在浏览器中保存多长时间?
(1)默认在关闭浏览器时销毁cookie数据
(2)持久存储
** setMaxAge(int 秒); 秒
** 参数:
正数---》将cookie数据写入硬盘文件。持久化存储[cookie生命周期]
** 负数:
默认值
** 零:
删除cookie信息
4.3 cookie 可以存储中文吗?
** 在tomcat8.0之前,中文数据不能直接存入cookies。
** 中文数据需要转码---》一般使用URL编码
** tomcat8.0后,cookies支持中文数据,但仍不支持特殊字符。建议使用 URL 编码存储
使用 URL 解码解析
* 编码 URLEncoder.encode("string","utf-8");
* 解码 URLDecoder.decode("string","utf-8");
5.cookies的特性和功能
特征:
(1)cookies 将数据存储在客户端浏览器中
(2)浏览器有单个cookie大小限制(4KB)和同域名下cookie总数限制(20个)
影响:
(1)cookies 通常用于存储少量不太敏感的数据
(2)无需登录即可完成服务端对客户端的识别
二、 会话
概述
session 是属于 jsp9 的大型内置对象之一
(1)服务器端会话技术,一个会话中多个请求共享数据,数据存储在服务器端对象中。jsp:session servlet:HttpSession
(2)在应用程序的WEB页面之间跳转时可以通过Session保存用户的状态,这样整个用户会话会一直存在,直到浏览器关闭。
注意:如果客户端长时间不向服务器发送请求,Session对象会自动消失。这个时间取决于服务器,例如Tomcat服务器默认为30分钟。
常用方法
公共无效setAttribute(字符串名称,字符串值);
** 设置具有指定名称的属性的值并将其添加到会话范围。如果该属性存在于会话范围内,请更改该属性的值。
公共对象getAttribute(字符串名称);
** 获取会话范围内具有指定名称的属性的值,返回值类型为object,如果该属性不存在则为null。
公共无效removeAttribute(字符串名称);
** 删除指定名称的会话属性。如果该属性不存在,则会发生异常。
公共无效无效();
** 使会话无效。当前会话可以立即失效,并且所有存储在原创会话中的对象都不能再被访问。
公共字符串 getId();
** 获取当前会话 ID。每个会话在服务器端都有一个唯一的标识 sessionID,而会话对象发送给浏览器的唯一数据就是 sessionID,一般存储在一个 cookie 中。
公共无效 setMaxInactiveInterval(int 间隔);
** 以秒为单位设置会话的最大持续时间,负数表示会话永不过期。
公共 int getMaxInActiveInterval();
** 获取会话的最大时长,使用时需要进行一些处理
session和cookie的区别
(1)session在服务器端存储数据,在客户端存储cookies
(2)session是一个内置对象,它的属性可以是任意类型,而Cookie对象只能设置字符串
(3)Session没有数据大小限制,Cookie有数据大小限制
(4)会话数据是安全的,cookies相对不安全
会话的使用
会话->内置对象
1.概览
服务器端会话技术,它在一个会话中的多个请求之间共享数据,并将数据保存在服务器端对象中。jsp:会话小服务程序:HttpSession
2.快速入门
(1)getAttribute(字符串名称);
(2)setAttribute(字符串名称,对象值)
(3)removeAattribute(字符串名称)
3.详情
1.客户端关闭时,服务端没有关闭,两次获取的session是一样的吗?
* 默认情况下,不
* 如果需要的话,可以创建一个cookie,key是JSESSIONID,设置最大存活时间,让cookie持久化。
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);
2.客户端没有关闭。服务器关闭后,两次获得的session是一样的吗?
* 不是同一个,但请确保没有数据丢失。tomcat 会自动执行以下操作。
** 会话钝化:
在服务器正常关闭之前将会话对象序列化到磁盘
** 会话激活:
服务器启动后,可以将会话文件转换为内存中的会话对象。
3.会话何时销毁?
(1) 服务器宕机
(2) 会话对象调用 invalidate() 方法
(3)会话默认过期时间为 30 分钟 => web.xml
4.会话功能
Session 用于存储一个会话的多个请求的数据,存储在服务器端
会话可以存储任何类型和大小的数据
session和cookie的区别
1.session 将数据存储在服务端,cookies 存储在客户端
Cookie存储的数据只能是文本,Session---Object
2.session 没有数据大小限制,cookie 有
3.session数据安全,cookies比较不安全
包括指令