Http协议是基于请求/响应模式、无状态的协议;所有请求时相互独立的、无连续的;服务器无法记住与识别用户。

对于简单的页面浏览或信息获取,http协议可以完全胜任;对于需要提供客户端和服务器端交互的网络应用则必须记住客户端状态。

会话就是一个连续不断的在在客户端和服务器端进行请求响应的一系列交互。

会话跟踪就是在这些请求和响应中维护需要的数据信息,使得这些相关的请求和响应得到正确的运作。

会话的实现过程:

  1.   当服务器端接收到客户端的首次请求时,服务器初始化一个会话并分配给该会话一个唯一标识符
  2. 在以后的请求中,客户端必须将唯一标识符包在请求中,服务器根据此标识符将请求与对应的会话联系起来。

实现会话跟踪的技术:

  1. 使用Cookie:所有的Http消息,不管是请求还是响应均包含头信息,由浏览器存储在客户端机器上的头信息就称作Cookie,以“属性=属性值;..”方式组成的文本信息;优点:简单性、基于文本的key-value对
    1. 创建Cookie : //Cookie c =new Cookie("userId","a1234");
    2. 设置最大时效:c.setMaxAge(60*60*24*7);
    3. 把cookie放入到http响应中:response.addCookie(c);
    4. 从客户端读取cookie:Cookie[] cookies=request.getCookies();   if(cookies!=null){for(int i =0;i<cookies.length;i++){Cookie cookie =cookies[i]; if(cookieName.equals(cookie.getName())){//do something with(codeValue)}}}
    5. cookie的属性:
      1. getMaxAge(); //设置cookie到期时间
      2. getName(); //读取cookie的名称
      3. getValue(); //读取/设置与cookie关联的值
  2. URL重写:
    1. 优点:必须对所有指向您的网站的url进行编码;所有页面必须动态生成;不能使用预先记录下来的url进行访问
    2. 缺点:cookie被禁用或者根本不支持的情况下依旧能够功能
  3. 隐藏的表单域
    1. <input type="hidden" name="session" value="..."/>
    2. 优点:cookie被禁用或者根本不支持的情况下依旧能够工作。
    3. 缺点:所有的页面必须是表单提交之后的结果。
    4. 会话对象生存于服务器上;会话自动通过cookie或url重写与客户关联起来,允许我们将任何对象存储到会话中
  4. HttpSession
    1. servlet容器提供httpsession接口来代表客户端和服务器端的会话;当一个Servlet容器为客户端开始一个会话时,创建一个新的HttpSession对象,除了代表会话外,httpSession对象还可以用于存储与会话相关的信息
    2. httpSession会话跟踪基础:
        1. 访问会话对象,request.getSession();
        2. getAttribute
        3. setAttribute
        4. removeAttribute,invalidate

会话失效:

  通过web.xml的<session-timeout>,由程序来结束会话httpSession接口提供了invalidate()

JavaEE复习三的更多相关文章

  1. javaEE复习重点个人总结

    最近在学院或集队的群里看见最多的就是求javaEE大作业了,那么突然有感而发,写点参考性的期末复习总结. 第一章JavaEE 概述: 1:两层体系应用体系结构 安全性低,部署困难,消耗系统资源 2 三 ...

  2. C#复习三(Day 22)

    哈哈,又到了总结的时间了.今天还是在继续复习C#的基础语法.这次总结主要以一下小程序为主. Split()的运用 123-456---789-----123-2把类似的字符串中重复符号去掉,得到123 ...

  3. Mac之OS系统下搭建JavaEE环境 <三> 之Eclipse 与 IntelliJ IDEA 的安装配置

    三.Eclipse 与 IntelliJ IDEA 的安装配置 1.Eclipse的安装配置 1 下载eclipse 到官网 https://www.eclipse.org/downloads/ecl ...

  4. SQL复习三(子查询)

    子查询 子查询就是嵌套查询,即select中包含这select,如果一条语句中存在着两个,或者两个以上的select,那么就是子查询语句了. 子查询出现的位置 where后,作为条件的一部分: fro ...

  5. JAVAEE第三周

    2.背景:看到Session时,感到很熟悉,毕竟涉及到过类似的编程,用得最多的地点就是保存客户端的信息和记录,比如说你已经登陆过某个网站,下次访问时不想要麻烦的重新登陆你就就可以使用这个机制.Sess ...

  6. Linux 复习三

    第三章Linux使用进阶 一.磁盘管理和文件系统 1.磁盘的基本概念:磁头(head).柱面(cylinder).扇区(sector) Linux系统中所有的设备被抽象成文件,存储在/dev目录下 设 ...

  7. C# 基础复习 三 XML操作

    XML 可扩展标记语言(所有标签都是自己定义,没有固定格式) 如果要给XML规定格式,可以使用dtd (dtd是什么?你不会自己百度吗) XML主要用来存储数据 XML的要求:     根节点只能有一 ...

  8. java IO复习(三)

    package com.zyw.io; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; ...

  9. day29-python阶段性复习三

    七.python打开文件方式 open r: 读的方式 w:已写的方式打开 a:以追加的方式 r+ 读写模式 w+ 读写 a+ 读写 rb:二进制读模式打开 wb:以二进制写模式打开 ab 二进制追加 ...

随机推荐

  1. Oracle 表空间和权限

    表空间 表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都存放在指定的表空间中.但主要存放的是表,所以称作表空间. Oracle中很多优化都是基于表空间的设计理念而实现的,一个 ...

  2. 基于hadoop_yarn的资源隔离配置

    目录 yarn的基本概念 scheduler 集群整体的资源定义 fair scheduler简介 配置demo 队列的资源限制 基于具体资源限制 基于权重资源限制 队列运行状态限制 基于用户和分组限 ...

  3. Django笔记&教程 3-3 模板常用语法

    Django 自学笔记兼学习教程第3章第3节--模板常用语法 点击查看教程总目录 本文主要参考:https://docs.djangoproject.com/en/2.2/ref/templates/ ...

  4. [luogu7418]Counting Graphs P

    参考[luogu7417],同样求出最短路,得到二元组$(x,y)$并排序,记$tot_{(x,y)}$为$(x,y)$的数量 其中所给的两个条件,即分别要求: 1.$(x,y)$只能和$(x\pm ...

  5. java获取CPU核心数

    package ThreadTest; public class ThreadTest05 { public static void main(String[] args) { //获取CPU核心 S ...

  6. 从零开始,使用Dapr简化微服务

    序言 现有的微服务模式需要再业务代码中集成大量基础设施模块,比如注册中心,服务发现,服务调用链路追踪,请求熔断,重试限流等等,使得系统过于臃肿重量级. Dapr作为新一代微服务模式,使用sidecar ...

  7. ppt的作用

    ppt不重要,使用ppt的场合很重要. 演讲分享,答辩总结,商业竞标,新年计划,年终总结.

  8. 用idea生成javadoc在线文档

    1.点击需要生成文档的包 2.点击tools--->选择generate javaDoc /1选择输出目录 /2防止中文乱码建议加上: -encoding utf-8 -charset utf- ...

  9. Codeforces 434E - Furukawa Nagisa's Tree(三元环+点分治)

    Codeforces 题面传送门 & 洛谷题面传送门 场号 hopping,刚好是我的学号(指 round 的编号) 注:下文中分别用 \(X,Y,K\) 代替题目中的 \(x,y,k\) 注 ...

  10. Nginx 动态增加扩展

    Nginx 动态增加扩展 1. 先查看目前nginx已加载模块 /home/nginx-1.18.0 # nginx -V nginx version: nginx/1.18.0 built by g ...