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(键映射)中的位置
    web路径专题+会话技术_第1张图片
    在这里插入图片描述
    web路径专题+会话技术_第2张图片

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

问题:
web路径专题+会话技术_第3张图片

1.1 相对路径

使用相对路径来解决, 有一个非常重要的原则: 页面所有的相对路径, 在默认情况下, 都会参考当前浏览器地址栏的路径http://ip:port/工程路径/资源 来进行跳转
web路径专题+会话技术_第4张图片

1.2 相对路径缺点

  1. …/的困扰
    web路径专题+会话技术_第5张图片
    web路径专题+会话技术_第6张图片
  2. 相对路径总是会依赖浏览器的地址栏, 所有不推荐使用. 如果需要指定页面相对路径参考的路径, 可以使用base标签来指定

1.3 base标签

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

浏览器对首位 / 的解析规则
web路径专题+会话技术_第7张图片

服务器对首位 / 的解析规则
web路径专题+会话技术_第8张图片

1.4 作业1

题目1: 由login.html跳转到user.html的所有方法
web路径专题+会话技术_第9张图片

  1. 不借助Servlet
    web路径专题+会话技术_第10张图片
  2. 借助Servlet
    web路径专题+会话技术_第11张图片
    web路径专题+会话技术_第12张图片

1.5 作业2

题目2: 由user.html返回到login.html的所有方法
web路径专题+会话技术_第13张图片
解决方案:
web路径专题+会话技术_第14张图片
web路径专题+会话技术_第15张图片

1.6注意细节

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

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

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

1.7 重定向作业

题目: 写出login.html在通过Servlet重定向情况下, 如何通过表单提交,找到user.html, 写出所有方法
web路径专题+会话技术_第18张图片
解决方案:
web路径专题+会话技术_第19张图片

1.8 web工程路径优化

web路径专题+会话技术_第20张图片

2. Cookie技术

2.1 Cookie简单示意图

  1. Cookie是服务器在客户端保存的用户信息, 比如登录名, 浏览历史等, 就可以以cookie的方式保存
  2. Cookie信息就像是小甜饼(cookie)一样, 数据量并不大, 服务器端在需要的时候可以从客户端读取
    web路径专题+会话技术_第21张图片

位置
web路径专题+会话技术_第22张图片
web路径专题+会话技术_第23张图片

web路径专题+会话技术_第24张图片

2.2 Cookie常用方法

  1. Cookie有点像一张表(K-V), 分两列, 一个是名字, 一个是值, 数据类型都是String, 都是小量的数据, 如图
    web路径专题+会话技术_第25张图片
  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->浏览器抓包
web路径专题+会话技术_第26张图片
web路径专题+会话技术_第27张图片
在这里插入图片描述

2.3 Cookie读取

web路径专题+会话技术_第28张图片
web路径专题+会话技术_第29张图片

2.3.1 JSESSIONID

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

web路径专题+会话技术_第30张图片

2.3.2 读取指定Cookie

web路径专题+会话技术_第31张图片
web路径专题+会话技术_第32张图片

2.4 Cookie修改

web路径专题+会话技术_第33张图片

2.5 Cookie生命周期

  1. Cookie的生命周期是指如何管理Cookie什么时候被销毁(删除)
  2. setMaxAge()
  1. 正数, 表示在指定的秒数后过期, 但仍存在于浏览器中
    web路径专题+会话技术_第34张图片
  2. 0表示马上在浏览器端删除Cookie
    web路径专题+会话技术_第35张图片
    web路径专题+会话技术_第36张图片
  3. 负数, 表示浏览器关闭, Cookie就会被删除(默认值是-1)
    web路径专题+会话技术_第37张图片
    web路径专题+会话技术_第38张图片
    web路径专题+会话技术_第39张图片

2.6 Cookie的有效路径

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

web路径专题+会话技术_第40张图片
web路径专题+会话技术_第41张图片
web路径专题+会话技术_第42张图片

2.7 Cookie作业布置

web路径专题+会话技术_第43张图片
web路径专题+会话技术_第44张图片

2.8 Cookie注意事项

  1. 一个Cookie只能标识一种信息, 它至少含有一个标识该信息的名称(Name)和设置值(Value)
  2. 一个Web站点可以给一个浏览器发送多个Cookie, 一个浏览器也可以存储多个Web站点提供的Cookie
    web路径专题+会话技术_第45张图片
  3. Cookie总的数量没有限制, 但是每个域名的Cookie数量和每个Cookie的大小是有限制的(不同的浏览器限制不同), Cookie不适合存放数据量大的信息

2.8.1 Cookie中文乱码问题

如果存放中文的cookie, 会报错, 可以通过url编码和解码解决
web路径专题+会话技术_第46张图片
web路径专题+会话技术_第47张图片

3. Session技术

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

3.1 Session原理示意图

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

web路径专题+会话技术_第49张图片

  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会清空
web路径专题+会话技术_第50张图片
web路径专题+会话技术_第51张图片
web路径专题+会话技术_第52张图片
web路径专题+会话技术_第53张图片
web路径专题+会话技术_第54张图片

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中配置
    web路径专题+会话技术_第55张图片
  7. Session的生命周期指的是: 客户端/浏览器两次请求的最大间隔时长, 而不是累积时长, 即当客户端访问了自己的session, session的生命周期将从0开始重新计算
  8. 底层: Tomcat用一个线程来轮询会话状态, 如果某个会话的空闲时间超过设定的最大值, 则将该会话销毁

3.3.2 Session生命周期实例

web路径专题+会话技术_第56张图片

web路径专题+会话技术_第57张图片
web路径专题+会话技术_第58张图片
web路径专题+会话技术_第59张图片
解读: Session的生命周期

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

3.4 Session作业

web路径专题+会话技术_第60张图片
web路径专题+会话技术_第61张图片
web路径专题+会话技术_第62张图片

你可能感兴趣的:(JavaWeb,前端,intellij-idea,java)