WEB核心【会话技术-session】第十六章

简介: 本文讲解会话技术中的session技术。

1,会话技术-session【本阶段重点】

1.1:简述&入门&原理

Session:保存在服务器端的会话技术。


1,session是一个会话范围的域对象,负责进行信息的共享




session依赖cookie传递jsessionid(给大家画张图方便理解)




浏览器之所以能在服务器上保存数据,是因为浏览器默认情况下 和服务器上一个session对象打交道,保证浏览器访问同一个session,根据sessionid,sessionid保存在浏览器的cookie上。



/**

* session数据存放

*/

public void run1(){

   HttpSession session = getRequest().getSession();

   session.setAttribute("msg","v1");

}

/**

* session数据获取

*/

public void run2(){

   HttpSession session = getRequest().getSession();

   Object msg = session.getAttribute("msg");

   System.out.println(msg);

}



getSession();

如何保证浏览器可以访问同一个session:


getSession时,会先判断请求头上存在jsessionid,如果存在jsessionid,再判断内存中session对象id 是否和 jsessionid相符,发现有jsessionid相符的,将id相同的session对象进行返回。


注意:若请求头jsessionid不存在、或者jsessionid和内存中session的id不匹配,都会导致重新创建一个session对象,给浏览器重新写一个jsessionid的cookie


若浏览器禁用cookie,session能用么?

Session不能使用,因为jsessionid无法传递,使得每次浏览器访问的session对象都是新对象。


getSession()写cookie原理:


浏览器第一次访问session对象 或者 浏览器带有的jsessionid不对,服务器会创建新的session对象给浏览器使用,给创建新的jsessionid的cookie。


BaseServlet和JSP中 自有jsessionid的原因:


BaseServlet的service方法源码中,有调用getSession()




1.2:声明周期

正常关闭的服务器,session数据未销毁:




正常情况下,服务器启动时,序列化文件会加载回去。(idea每次启动都会清空临时目录,将来项目只部署tomcat上)



public void run4(){

   //标记当前session需要被销毁

   getRequest().getSession().invalidate();

}


1.3:常用API




public void run5() throws IOException {

   PrintWriter writer = getResponse().getWriter();

   HttpSession session = getSession();

   writer.write(session.getId());

   writer.write(new Date(session.getCreationTime()).toLocaleString());

   writer.write(new Date(session.getLastAccessedTime()).toLocaleString());

   //session.setMaxInactiveInterval();//30分钟  30*60

   writer.write(session.isNew()+"");

相关文章
|
3月前
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
3月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
67 6
|
3月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
84 3
|
3月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
107 4
|
3月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
111 1
|
3月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
180 2
|
3月前
|
缓存 安全 前端开发
构建高效Web应用的五大关键技术
【10月更文挑战第42天】在数字化浪潮中,Web应用已成为企业与用户互动的重要桥梁。本文将深入探讨提升Web应用性能和用户体验的五项核心技术,包括前端优化、后端架构设计、数据库管理、安全性增强以及API开发的最佳实践。通过这些技术的应用,开发者可以构建出更快、更稳定且更安全的Web应用,满足现代网络环境的需求。
|
4月前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
90 2
|
4月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
110 0
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
3月前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
71 0

热门文章

最新文章