当前位置: 首页 > news >正文

web路径专题+会话技术

目录

    • 自定义快捷键
  • 1. 工程路径问题及解决方案
    • 1.1 相对路径
    • 1.2 相对路径缺点
    • 1.3 base标签
    • 1.4 作业1
    • 1.5 作业2
    • 1.6注意细节
    • 1.7 重定向作业
    • 1.8 web工程路径优化
  • 2. Cookie技术
    • 2.1 Cookie简单示意图
    • 2.2 Cookie常用方法
    • 2.2 Cookie创建
    • 2.3 Cookie读取
      • 2.3.1 JSESSIONID
      • 2.3.2 读取指定Cookie
    • 2.4 Cookie修改
    • 2.5 Cookie生命周期
    • 2.6 Cookie的有效路径
    • 2.7 Cookie作业布置
    • 2.8 Cookie注意事项
      • 2.8.1 Cookie中文乱码问题
  • 3. Session技术
    • 3.1 Session原理示意图
    • 3.2 Session常用方法
    • 3.2 Session底层机制
    • 3.3 Session生命周期
      • 3.3.1 Session生命周期说明
      • 3.3.2 Session生命周期实例
    • 3.4 Session作业

自定义快捷键

自定义idea快捷键

  1. 首先找到你想做的快捷键的位置, 鼠标停留上去, 浮出一个标签, 根据②和③来找到该按钮在keymap(键映射)中的位置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1. 工程路径问题及解决方案

问题:
在这里插入图片描述

1.1 相对路径

使用相对路径来解决, 有一个非常重要的原则: 页面所有的相对路径, 在默认情况下, 都会参考当前浏览器地址栏的路径http://ip:port/工程路径/资源 来进行跳转
在这里插入图片描述

1.2 相对路径缺点

  1. …/的困扰
    在这里插入图片描述
    在这里插入图片描述
  2. 相对路径总是会依赖浏览器的地址栏, 所有不推荐使用. 如果需要指定页面相对路径参考的路径, 可以使用base标签来指定

1.3 base标签

  1. base标签是HTML语言中的基准网址标记, 它是一个单标签, 位于网页头部文件的head标签内
  2. 一个页面最多只能使用一个base元素, 用来提供一个指定的默认目标, 是一种表达路径和连接网址的标记
  3. 常见的url路径形式分别有相对路径和绝对路径, 如果base标签指定了目标, 浏览器将通过这个目标来解析当前文档中所有的相对路径, 包括的标签有(a标签, img标签, link标签, form标签)
  4. 也就是说, 浏览器解析时会在路径前加上base给的目标, 而页面中的相对路径也都转换成了绝对路径. 使用了base标签就应带上href属性和target属性

浏览器对首位 / 的解析规则
在这里插入图片描述

服务器对首位 / 的解析规则
在这里插入图片描述

1.4 作业1

题目1: 由login.html跳转到user.html的所有方法
在这里插入图片描述

  1. 不借助Servlet
    在这里插入图片描述
  2. 借助Servlet
    在这里插入图片描述
    在这里插入图片描述

1.5 作业2

题目2: 由user.html返回到login.html的所有方法
在这里插入图片描述
解决方案:
在这里插入图片描述
在这里插入图片描述

1.6注意细节

  1. web工程的相对路径和绝对路径
  • 相对路径
    • .表示当前目录
    • …表示上一级目录
  • 资源名
    • 表示当前目录 / 资源名
  • 绝对路径
    • http://ip:port/工程路径 / 资源路径
  1. 在实际开发中, 路径都是用绝对路径, 而不是相对路径
  2. 在web中, / 斜杠如果被浏览器解析, 得到的地址是: http://ip[域名]:port/, 比如<a href=“/”>fds</a>
  3. 在web中, / 斜杠如果被服务器解析, 得到的地址是: /工程路径/, 你也可以理解为http://ip[域名]:port/工程路径/, 下面几种情况就是如此:
  • <url-pattern>/servletUrl<url-pattern>
  • servletContext.getRealPath(“/”)
  • request.getRequestDispatcher(“/”)
    在这里插入图片描述
  1. 在javaWeb中, 路径最后带 / 和不带 / 含义不同, 一定要小心
    比如<a href=“/a/servlet03”>网址</a> servlet03表示资源; <a href=“/a/servlet03/”>网址</a> servlet03表示路径
    在这里插入图片描述
  2. 特别说明: response.sendRedirect(“/”); 这条语句虽然是在服务器执行的, 但是服务器把斜杠 / 发送给浏览器解析. 因此得到地址 http://ip[域名]:port/

小结: 在编写资源路径时, 要考虑这么几点:

  1. 这个路径 前面有没有 /
  2. 如果有, 这个路径是在哪里被解析的, 是在服务器还是在浏览器. 如果是在浏览器端被解析的, 被解析成 http://ip:port/; 如果是在服务器端被解析的, 被解析成 /工程路径/.
  3. 如果没有 / , 并且在浏览器被解析, 则以浏览器当前的地址栏 去掉 资源部分作为一个相对路径的参考路径.
  4. 这个路径 最后有没有 / , 如果最后有 / , 表示一个路径; 如果没有 / , 表示定位一个资源

1.7 重定向作业

题目: 写出login.html在通过Servlet重定向情况下, 如何通过表单提交,找到user.html, 写出所有方法
在这里插入图片描述
解决方案:
在这里插入图片描述

1.8 web工程路径优化

在这里插入图片描述

2. Cookie技术

2.1 Cookie简单示意图

  1. Cookie是服务器在客户端保存的用户信息, 比如登录名, 浏览历史等, 就可以以cookie的方式保存
  2. Cookie信息就像是小甜饼(cookie)一样, 数据量并不大, 服务器端在需要的时候可以从客户端读取
    在这里插入图片描述

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

在这里插入图片描述

2.2 Cookie常用方法

  1. Cookie有点像一张表(K-V), 分两列, 一个是名字, 一个是值, 数据类型都是String, 都是小量的数据, 如图
    在这里插入图片描述
  2. 如果创建一个Cookie(在服务端创建)
    Cookie cookie = new Cookie(String name, String val);
    cookie.setMaxAge();//保存时间
  3. 如何将一个Cookie添加到客户端
    response.add Cookie(cookie);
  4. 如何读取cookie(在服务端读取cookie信息)
    request.getCookies();

2.2 Cookie创建

新建一个Web工程->添加Web框架->新建lib, 引入servlet包Add as Library->配置tomcat->创建Servlet->浏览器抓包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 Cookie读取

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

2.3.1 JSESSIONID

  1. 提示: 访问Servlet(比如 http://localhost:8088/cs/updateCookie)不会生成JSESSIONID, 访问http://localhost:8088/cs/才会生成
  2. 要关闭浏览器再开一个新的, 才能产生一个新的session绘画

在这里插入图片描述

2.3.2 读取指定Cookie

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

2.4 Cookie修改

在这里插入图片描述

2.5 Cookie生命周期

  1. Cookie的生命周期是指如何管理Cookie什么时候被销毁(删除)
  2. setMaxAge()
  1. 正数, 表示在指定的秒数后过期, 但仍存在于浏览器中
    在这里插入图片描述
  2. 0表示马上在浏览器端删除Cookie
    在这里插入图片描述
    在这里插入图片描述
  3. 负数, 表示浏览器关闭, Cookie就会被删除(默认值是-1)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.6 Cookie的有效路径

规则如下:
cookie1.setPath = /工程路径
cookie2.setPath = /工程路径/aaa
请求地址: http://ip:端口/工程路径/资源
cookie1 会发送给浏览器
cookie2 不会发送给浏览器
请求地址: http://ip:端口/工程路径/aaa/资源
cookie1 会发送给服务器
cookie2 会发送给服务器

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

2.7 Cookie作业布置

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

2.8 Cookie注意事项

  1. 一个Cookie只能标识一种信息, 它至少含有一个标识该信息的名称(Name)和设置值(Value)
  2. 一个Web站点可以给一个浏览器发送多个Cookie, 一个浏览器也可以存储多个Web站点提供的Cookie
    在这里插入图片描述
  3. Cookie总的数量没有限制, 但是每个域名的Cookie数量和每个Cookie的大小是有限制的(不同的浏览器限制不同), Cookie不适合存放数据量大的信息

2.8.1 Cookie中文乱码问题

如果存放中文的cookie, 会报错, 可以通过url编码和解码解决
在这里插入图片描述
在这里插入图片描述

3. Session技术

  1. Session是服务器端技术, 服务器在运行时会为每一个用户的浏览器创建一个其独享的session对象/集合
  2. 由于session为各个用户浏览器独享, 所以用户在访问浏览器的不同页面时, 可以从各自的session中读取/添加数据, 从而完成相应任务

3.1 Session原理示意图

  1. 当用户打开浏览器, 访问某个网站, 操作session时, 服务器就会在内存(在服务端)为该浏览器分配一个session对象, 该session对象被这个浏览器独占
  2. 这个session对象也可看作是一个容器/集合, session对象默认存在时间30min(Tomcat的conf/web.xml中配置的), 也可修改
    在这里插入图片描述
  • session可以做什么?
    • 网上商城的购物车
    • 保存登陆用户的信息
    • 将数据放入到Session中, 供用户在访问不同页面时, 实现跨页面访问数据
    • 防止用户非法登录到某个页面
  • Session存储结构示意图

在这里插入图片描述

  1. 你可以把Session看作是一种容器类似HashMap, 有两列(K-V), 每一行就是session的一个属性.
  2. 每个属性包含有两个部分, 一个是该属性的名字(String), 另一个是该属性的值(Object)

3.2 Session常用方法

  1. 创建和获取Session
    HttpSession hs = request.getSession()
    第一次调用是创建Session会话, 之后调用是获取创建好的Session对象
  2. 向session添加属性
    js.setAttribute(String name, Object obj)
  3. 从session得到某个属性
    Object obj = hs.getAttribute(String name)
  4. 从session删除某个属性
    hs.removeAttribute(String name)
  5. isNew();
    判断是不是刚创建出来的Session
  6. 每个Session都有1个唯一标识Id值. 通过getId() 得到 Session的会话 id值

3.2 Session底层机制

项目重新发布Session会清空
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 Session生命周期

3.3.1 Session生命周期说明

  1. public void setMaxInactiveInterval(int interval), 设置Session的超时时间(以秒为单位), 超过指定的时长, Session就会被销毁
  2. 值为正数的时候, 设定Session的超时时长
  3. 负数表示永不超时
  4. public int getMaxInactiveInterval()获取Session的超时时间
  5. public void invalidate() 让当前Session会话立即无效
  6. 如果没有调用setMaxInactiveInterval()来指定Session的生命时长, Tomcat会以Session的默认时长为准, Session的默认超时时间为30min, 可以在tomcat的web.xml中配置
    在这里插入图片描述
  7. Session的生命周期指的是: 客户端/浏览器两次请求的最大间隔时长, 而不是累积时长, 即当客户端访问了自己的session, session的生命周期将从0开始重新计算
  8. 底层: Tomcat用一个线程来轮询会话状态, 如果某个会话的空闲时间超过设定的最大值, 则将该会话销毁

3.3.2 Session生命周期实例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解读: Session的生命周期

  1. 指的是两次访问session的最大间隔时间
  2. 如果你在session没有过期的情况下, 操作session, 则会重新开始计算生命周期
  3. session是否过期, 是由服务器来维护和管理
  4. 如果我们调用了invalidate(), 会直接将该session删除/销毁
  5. 如果希望删除session对象的某个属性, 使用removeAttribute(“xx”)

3.4 Session作业

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

相关文章:

web路径专题+会话技术

目录 自定义快捷键 1. 工程路径问题及解决方案1.1 相对路径1.2 相对路径缺点1.3 base标签1.4 作业11.5 作业21.6注意细节1.7 重定向作业1.8 web工程路径优化 2. Cookie技术2.1 Cookie简单示意图2.2 Cookie常用方法2.2 Cookie创建2.3 Cookie读取2.3.1 JSESSIONID2.3.2 读取指定C…...

Jetpack Compose 实战 宝可梦图鉴

文章目录 前言实现效果一、架构介绍二、一些的功能点的介绍加载图片并获取主色,再讲主色设置为背景一个进度缓慢增加的圆形进度条单Activity使用navigation跳转Compose可组合项返回时页面重组的问题hiltViewModel() 主要参考项目总结 前言 阅读本文需要一定compose基础&#x…...

高效时间管理日历 DHTMLX Event Calendar 2.0.3 Crack

DHTMLX Event Calendar用于高效时间管理的轻量级 JavaScript 事件日历 DHTMLX 可帮助您开发类似 Google 的 JavaScript 事件日历&#xff0c;以高效地组织约会。 用户可以通过拖放来管理事件&#xff0c;并以六种不同的模式显示它们。 JavaScript 事件日历功能 轻的简单的 Java…...

ASIC-WORLD Verilog(2)FPGA的设计流程

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----asic-world网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加了自己的理解&#xff09;分享给大家。 这是网站原文&…...

数字化体验时代,企业如何做好内部知识数字化管理

随着数字化时代的到来&#xff0c;企业内部的知识管理也面临着新的挑战和机遇。数字化技术的应用&#xff0c;可以极大地提高企业内部知识的数字化管理效率和质量&#xff0c;从而提升企业内部的工作效率、员工满意度和企业竞争力。本文将从数字化时代的背景出发&#xff0c;探…...

Qt5.12實戰之Linux靜態庫與動態庫多文件生成a與so文件並調用

1.編輯並輸入內容到test.cpp與test2.cpp test.cpp #include <stdio.h> int func() {return 888; } test2.cpp #include <stdio.h> int func2() {return 999; } 將test.cpp與test2.cpp編譯成目標文件&#xff1a; g -c test.cpp test2.cpp 一次性生成目標文件…...

Spring 之初始化前中后详解

Spring 框架是一个非常流行的 Java 框架&#xff0c;它提供了一种轻量级的、可扩展的方式来构建企业级应用程序。在 Spring 的生命周期中&#xff0c;有三个重要的阶段&#xff0c;即初始化前、初始化、初始化后。这篇文章将详细介绍这些阶段&#xff0c;并提供相应的源代码示例…...

企业数字化转型路上的陷阱有哪些

近年来&#xff0c;随着科技的快速发展&#xff0c;越来越多的企业开始了数字化转型的征程&#xff0c;希望通过数字化技术来提高企业的效率、降低成本、提升竞争力。然而&#xff0c;数字化转型也存在许多陷阱&#xff0c;如果不注意&#xff0c;可能会导致企业陷入困境。下面…...

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强(C++)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强&#xff08;C&#xff09; Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合OpenCV使用图像增强算法1.引用合适的类文件2.BGAPI SDK在图像回调中引用…...

面试官:“你会组件化开发操作吗?它的优势在哪?”

随着 Android 版本的不断更新升级和用户对 APP 产品需求技术越来越高&#xff0c;相对的各大公司对 Android 开发者们设置的招聘门槛也越来越高。 至于如何去看一个开发者水平的高低&#xff0c;一般看面试官会怎么问&#xff0c;会问哪些部分的技术内容&#xff1f; 一般公司…...

腾讯新增长,AI扛大旗?

经历了疫情期间的低谷与波折&#xff0c;腾讯正在恢复它的活力。 3月22日&#xff0c;腾讯发布了2022年第四季度及全年财报。财报显示&#xff0c;2022全年营收为5546亿元人民币&#xff0c;归母净利润(Non-IFRS)为1156亿元人民币&#xff1b;2022年腾讯第四季度的营收为1450亿…...

项目6:实现数据字典的展示与缓存

项目6:实现数据字典的展示与缓存 1.数据字典如何展示? 2.前后端如何设计? 3.前端设计代码? 4.后端设计代码? 5.实现数据字典缓存到redis 项目6:实现数据字典的展示与缓存 1.数据字典如何展示? ①数据字典展示 树形结构②...

JsNode算法题acm模式输入

js分为jsNode和JsV8两种输入输出方式&#xff0c;一般的执行代码还是一样的 牛客是两种都支持 华为的题目大多只支持jsNode 本文主要介绍jsNode的输入 JsNode 首先他是逐行输入的&#xff0c;就和py差不多&#xff0c;一定是每行每行地输入&#xff0c;用字符串line&#x…...

Javaweb小练习---在JSP中使用Javabean访问数据库完成用户信息的简单添加

Javaweb小练习---在JSP中使用Javabean访问数据库完成用户信息的简单添加 目录 Javaweb小练习---在JSP中使用Javabean访问数据库完成用户信息的简单添加 0.创建数据库 1. 在resources目录下创建db.properties文件 2. /** * 获取链接与释放资源的工具类--JdbcUtil类 */ 3…...

(十七)排序算法-基数排序

1 基本介绍 1.1 概述 &#xff08;1&#xff09;基数排序&#xff08;radix sort&#xff09;属于“分配式排序”&#xff0c;顾名思义&#xff0c;它是通过键值的各个位的值&#xff0c;将要排序的元素分配至某些“桶”中&#xff0c;达到排序的作用。 &#xff08;2&#x…...

JMM之先行发生原则(happens-before)详解

1、概述 在JMM规范下&#xff0c;如果一个操作执行的结果需要对另一个操作可见&#xff0c;那么这两个操作之间必须存在happers-before(先行发生)原则。 例如 int x 10 ; int y x; 这两行代码中第二个操作 yx &#xff0c;因为需要将x值赋值给y&#xff0c;所以第一行代码的…...

含分布式电源的配电网可靠性评估研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

安全加固服务是什么?哪些行业需要做?

安全加固服务是什么&#xff1f;安全加固服务是一种针对企业信息系统、网络设备、应用程序等进行安全加固和优化的服务。安全加固服务的主要目的是保障企业信息系统的安全性和稳定性&#xff0c;有效防范各类网络攻击和安全威胁。 安全加固服务是什么&#xff1f;通常包括以下…...

好程序员:Java书籍推荐,程序员必看的5本Java书籍,赶紧收藏!

今天好程序员给大家推荐5本Java书籍&#xff0c;各大高校都在使用&#xff08;具体名单如下&#xff09;&#xff0c;所有学习Java的程序员都不应该错过&#xff01; 第一本Java书籍《Java EE&#xff08;SSM框架&#xff09;企业应用实战》 本书全面介绍了JavaEE中MyBatis、Sp…...

maven将jar包添加到本地仓库

第一步&#xff1a;下载需要添加的jar包 可以在maven库中查找下载&#xff0c;也可以在对应官网下载 maven库网址&#xff1a;https://mvnrepository.com/ 找到对应版本的jar包下载 第二步&#xff1a;将下载的jar包放到指定位置&#xff08;位置自己指定&#xff09;&#xf…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...