会话技术

用户使用Web应用的过程实际是调用了一系列的Servlet来组合处理请求,从而完成整个业务流。不同Servlet组合起来为用户服务的时候就会遇到一个数据共享和传输的问题,如何让多个Servlets能识别用户?能否用request或者是context来保存attributes从而传递属性?

  • 用request.getRequestDispacther(url).forward(request,response), 要求servlets业务流连续不能断裂,即用户一购物就立即结账
  • 用context 保存attributes会有线程问题,多个用户使用同一个servlet处理请求会造成数据问题

为了解决不同Servlet数据共享的问题产生了会话技术,JavaWeb有两种会话技术:cookie和session,这两种技术的核心区别是cookie把客户信息存储在客户浏览器上,session把客户信息存粗在服务器上:

  • Cookie,WebServer将生成的客户数据存储在浏览器端,浏览器在发送请求时将cookie信息加入http header发送给Server,Server根据不同的cookie进行不同的处理。
  • Session,WebServer为每个客户的浏览器建立一个独享的session对象存储客户数据,并且将sessionid回送给客户端浏览器,客户在发起请求时带着session,Server根据sessionid进行不同的处理。
  • 淘宝和博客园用的都是cookie,cookie把数据都存在浏览器端,对服务器磁盘的压力小,但是每次请求要携带大量的数据,对网络带宽的要求高。

Cookie交互流程

程序实现技术点

  • Browser最多存30个Cookie,每次浏览记录应该更新Cookie,而不是新增Cookie
  • 浏览历史应该存最近浏览的Cookie

首页Servlet

  • 显示商品列表
  • 显示浏览历史

查看详情Servlet

  • 显示商品详情
  • 更新Cookie并且回写Cookie信息给浏览器

JavaWeb基础: 会话技术简介的更多相关文章

  1. javaweb学习——会话技术(一)

    会话: 1.什么是会话:从打开一个浏览器,访问页面,到最终关闭浏览器的一个过程,就是一次会话. 2.会话的特点:包含多个请求,一次完整的会话是只针对一个用户. 3.会话机制:web中常用的技术,用来跟 ...

  2. JavaWeb基础—会话管理之Cookie

    一.什么是会话 打开浏览器,浏览各种资源,点击各种超链接,直至关闭浏览器,整个过程称为会话 二.会话管理的两种技术 1.Cookie 基于客户端.在客户端记录信息来确认用户身份.以cookie的形式写 ...

  3. JavaWeb基础 - 会话

    会话概述 什么是会话 简单的理解:用户打开浏览器,点击多个超链接,访问Web服务器上多个资源,然后关闭浏览器,整个过程称之为一次会话. 需要解决的问题 每个用户在使用浏览器与服务器会话的过程中,会产生 ...

  4. javaweb学习——会话技术(二)

    文中部分借鉴了:https://www.cnblogs.com/xdp-gacl/p/3855702.html https://blog.csdn.net/p744174529/article/det ...

  5. JavaWeb基础—会话管理之Session

    一.什么是session session类似于客户端在服务器端的账户.使用Map存放 一个会话锁定一个用户(一般情况下是一个客户端,即一个浏览器独占一个session对象),即使使用浏览器访问其他程序 ...

  6. [JavaWeb基础] 028.CSS简介和基础语法

    css 概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现 ...

  7. JAVA基础之会话技术-Cookie及Session

    至此,学习Servlet三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...

  8. Java实战之04JavaWeb-03会话技术

    一.会话技术简介 1.什么是会话,为什么需要会话技术? 会话:从打开一个浏览器,访问某个网站,到关闭这个浏览器的这个过程称为一次会话.http协议是状态的. 2.会话技术的分类 客户端存储技术:Coo ...

  9. Cookie&Session会话技术

    一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客 ...

随机推荐

  1. 【leetcode❤python】235. Lowest Common Ancestor of a Binary Search Tree

    #-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init ...

  2. CodeForces 451C Predict Outcome of the Game

    Predict Outcome of the Game Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d &a ...

  3. ubuntu下ssh登陆阿里云服务器(ubuntu系统)中文乱码问题

    研究了几天终于解决了... 原文地址:  http://blog.csdn.net/a__yes/article/details/50489456 问题描述: 阿里云的服务器ubuntu系统,wind ...

  4. TreeList的使用

    添加列 TreeListColumn column = treeList1.Columns.Add(); column.Caption = @"建筑列表"; column.Visi ...

  5. c语言中的位移位操作

    先要了解一下C语言里所有的位运算都是指二进制数的位运算.即使输入的是十进制的数,在内存中也是存储为二进制形式. “<<”用法: 格式是:a<<m,a和m必须是整型表达式,要求m ...

  6. SQL索引一步到位

    以下均非原创,仅供分享.学习!!! SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? S ...

  7. javascript权威指南笔记--javascript语言核心(三)

    1.var用来声明一个或多个变量.全局变量是全局对象的属性,它无法通过delete删除. 如果var语句中的变量没有指定初始化表达式,那么这个变量的初始值为undefined. 变量声明语句会被提前到 ...

  8. 面向对象的JavaScript系列一,创建对象

    1.最简单的创建对象方法 var person = new Object(); person.name = "sam wu"; person.age = 25; person.jo ...

  9. java的重修之路

    一.内存管理 java里的声明分引用与基本数据类型. 数组: java里new一个对象数组为  person[] A; A = new person[4];  person[0] = new pers ...

  10. 十种JAVA排序算法实例

    一.冒泡(Bubble)排序 复制代码 代码如下: void BubbleSortArray() {       for(int i=1;i<n;i++)       {         for ...