Java Web(九)会话跟踪技术

简介: 主要是Cookie和Session的使用细节

会话跟踪技术

  • 会话:用户打开浏览器,访问wb服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应

网络异常,图片无法展示
|

  • 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据
  • HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享
  • 实现方式:1.客户端会话跟踪技术:Cookie2.服务端会话跟踪技术:Session

一.Cookie

1.Cookie基本使用

  • Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
  • 基本使用
    发送Cookie
    1.创建Cookie对象,设置数据

Cookiedookie=newCookie("key","value");

  • 2.发送Cookie到客户端

response.addCookie(cookie);

  • 获取Cookie
    3.获取客户端携带的所有Cookie,使用request对象

Cookie[]cookies=request.getCookies();

  • 4.遍历数组,获取每一个Cookie对象:for
    5.使用Cookie对象方法获取数据

cookie.getName();

cookie.getValue();

2.Cookie原理

  • Cookie的实现是基于HTTP协议的
  • 响应头:set-cookie
  • 请求头:cookie

网络异常,图片无法展示
|

3.Cookie使用细节

  • Cookie存活时间
  • 默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
  • setMaxAge(int seconds).:设置Cookie存话时间1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁3.零:删除对应Cookie
  • Cookie存储中文
  • Cookie不能直接存储中文
  • 如需要存储,则需要进行转码:URL编码

二.Session

1.Session基本使用

  • 服务端会话跟踪技术:将数据保存到服务端
  • JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
  • 使用:1.获取Session对象

HttpSessionsession=request.getSession();

  • 2.Session对象功能:
  • void setAttribute(String name,Object o):存储数据到session域中
  • Object getAttribute(String name:根据key,获取值
  • void removeAttribute(String name):根据key,删除该键值对

2.Session原理

  • Session是基于Cookie实现的

网络异常,图片无法展示
|

3.Session使用细节

  • Session钝化、活化:
  • 服务器重启后,Session中的数据是否还在?
  • 钝化:在服务器正常关闭后,Tomcat:会自动将Session数据写入硬盘的文件中
  • 活化:再次启动服务器后,从文件中加载数据到Session中
  • Session销毁:
  • 默认情况下,无操作,30分钟自动销毁

<session-config>

   <session-timeout>30</session-timeout>

</session-config>

  • 调用Session对象的invalidate()方法

三.小结

  • Cookie和Session都是来完成一次会话内多次请求间数据共享的
  • 区别
  • 存储位置:Cookie是将数据存储在客户端,Session将数据存储在服务端
  • 安全性:Cookie不安全,Session安全
  • 数据大小:Cookie最大3KB,Session无大小限制
  • 存储时间:Cookie可以长期存储,Session默认30分钟
  • 服务器性能:Cookie不占服务器资源,Session占用服务器资源
目录
相关文章
|
13天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
26 6
|
28天前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
46 6
|
1月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
55 4
|
1月前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
43 1
|
1月前
|
监控 Java 数据管理
java会话跟踪和拦截器过滤器
本文介绍了Web开发中的会话跟踪技术——Cookie与Session,以及过滤器(Filter)和监听器(Listener)的概念和应用。Cookie通过在客户端记录信息来识别用户,而Session则在服务器端保存用户状态。过滤器用于拦截和处理请求及响应,监听器则监控域对象的状态变化。文章详细解释了这些技术的实现方式、应用场景和主要方法,帮助开发者更好地理解和使用这些工具。
42 1
|
1月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
55 1
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
47 3
|
1月前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
16 2
|
1月前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
30 4
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
30 1