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. 如何实现异步 connect

    写过网络程序的同学,应该都知道 connect 函数,在 socket 开始读写操作之前,先要进行连接,也即 TCP 的三次握手 , 这个过程就是在 connect 函数中完成的, connect 函 ...

  2. 菜鸡的Java笔记 第三十二 - java 静态导入的实现

    静态导入的实现        为了理解静态导入的操作产生的动机,下面通过一个具体的代码来观察        范例:现在有一个 Import 的类,这个类中的方法全部都是 static 方法 packa ...

  3. AtCoder Regular Contest 127

    Portal B Description 给出\(n(\leq5\times10^4),L(\leq15)\),构造\(3n\)个不同\(L\)位的三进制数,使得在这\(3n\)个数的每一位上,0/1 ...

  4. 从0到1使用Kubernetes系列(八):Kubernetes安全

    本文是从 0 到 1 使用 Kubernetes 系列第八篇,上一篇从0到1使用Kubernetes系列(七):网络介绍了 K8S 网络相关的内容,本文将带你了解 K8S 的安全问题. Kuberne ...

  5. [hdu7023]Yet Another Matrix Problem

    关于$f(x)$的条件,将$C=A\times B$代入,即$\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{r}A_{i,k}B_{k,j}=x$ 调换枚举顺序,即$ ...

  6. [loj3032]馕

    (直接贪心会导致分子和分母过大) 令$S_{i}=\sum_{j=1}^{L}V_{i,j}$(即其独吞整个馕的快乐度),对第$i$个人求出$n$个位置$x_{1},x_{2},...,x_{n-1} ...

  7. [cf1270I]Xor on Figures

    考虑一个构造:令初始$2^{k}\times 2^{k}$的矩阵为$A$(下标从0开始),再构造一个矩阵$T$,满足仅有$T_{x_{i},y_{i}}=1$(其余位置都为0),定义矩阵卷积$\oti ...

  8. [cf582E]Boolean Function

    由于每一个运算都有括号,因此添加的运算不会改变运算顺序 先将其建出一棵表达式树,也就是维护两个栈,是节点和运算符优先级单调递增的栈(设置左括号优先级最低,右括号弹出直至左括号) 每一次运算,也就是新建 ...

  9. Java跟JavaScript两者间的关系和区别

    想必很多人在刚接触和认识Java的时候,都好奇它与JavaScript之间的关系,长得这么像,难道是出自同门的升级版?嗯,他们的发明者确实颇具渊源,而且客观来说,JS确实相较Java更加简洁大众,但它 ...

  10. Codeforces 739D - Recover a functional graph(二分图匹配)

    Codeforces 题面传送门 & 洛谷题面传送门 首先假设我们已经填好了所有问号处的值怎样判断是否存在一个合法的构造方案,显然对于一种方案能够构造出合法的基环内向森林当且仅当: \(\fo ...