web服务器没有短期记忆,所以需要使用session来跟踪用户的整个会话活动。会话管理有3种解决方案:

  1)使用隐藏域(很少使用)

  在显示页面中使用隐藏域来保存会话ID。例如,在JSP中将input标签的type属性设定为hidden,再将绘画的唯一标识记录到隐藏域的value属性中,并设置name属性。当表单提交时,会话标识也被提交到服务端,服务端根据它找到对应的会话对象。此方法实现起来比较繁琐,需要在每个页面中都包含会话标识表单,所以使用较少。

  2)使用Cookie

  服务器生成会话ID、创建cookie对象、把会话ID放到cookie中、把cookie设置为响应的一部分(这些均由容器负责)。客户端收到响应后,将会话ID保存在cookie中,在下一次请求时从cookie中取得慧华表示并发送给服务器端,服务器端收到请求后,根据发送过来的会话标识查找到对应的会话对象,这样服务器端就清除当前是哪个客户端在连接,并且可以从会话中获得信息。利用cookie实现会话管理是目前开发中采用的主流方法。

  3)使用URL重写

  如果浏览器不支持cookie,可以使用URL重写实现会话。就是在URL地址的末尾添加会话标识,改写了原来的URL地址。服务端接收到请求时,解析出会话标识,然后利用会话标识查找出与当前请求相对应的会话对象。

  利用URL重写的方法,整个web应用中的超链接或者脚本中用到的URL都需要添加会话标识,web应用中的每一个页面都需要动态生成,页面的每一个连接或者由客户端生成的跳转指令都必须加上会话标识,这样才能确保是当前会话。当客户访问静态页面时,会话标识将会丢失,当重回动态页面时将不能继续此前的会话,这是它的缺陷之一。

  其次,当用户在浏览网页时,可能会复制URL分享给朋友,因为URL中包含了会话标识,那么其他人可能与当前浏览者使用同一会话对象,这样可能会暴露隐私信息。

Session初识的更多相关文章

  1. Django框架 之 Cookie和Session初识

    Django框架 之 Cookie和Session初识 浏览目录 Cookie介绍 Django中的Cookie Session 一.Cookie介绍 1.Cookie产生的意义 众所周知,HTTP协 ...

  2. AJAX异步、sweetalert、Cookie和Session初识

    一.AJAX的异步示例 1. urls.py from django.conf.urls import url from apptest import views urlpatterns = [ ur ...

  3. web框架--tornado之cookie与session初识

    cookie的本质其实就是在浏览器端保存的键值对, 每当浏览器端发送一次请求, 都会将这些键值对附加在请求中并发送给服务器端. 一.目录结构 二.main_pro.py #!/usr/bin/env ...

  4. python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)

    一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...

  5. 初识 Asp.Net内置对象之Session对象

    Session对象 Session对象用于存储在多个页面调用之间特定用户的信息.Session对象只针对单一网站使用者,不同的客户端无法相互访问.Session对象中止联机机器离现时,,也就是当网站使 ...

  6. 初识Flask框架,以及Flask中的模板语言jinjia2和Flask内置的Session

    一.web框架的对比 首先我们先来看下比较火的web框架 1.Django: 优点:大而全,所有组件都是组织内部开发高度定制化,教科书级别的框架 缺点:大到浪费资源,请求的时候需要的资源较高 2.Fl ...

  7. [MySQL 5.6] 初识5.6的optimizer trace

      在MySQL5.6中,支持将执行的SQL的查询计划树记录下来,目前来看,即使对于非常简单的查询,也会打印出冗长的查询计划,看起来似乎不是很可读,不过对于一个经验丰富,对查询计划的生成过程比较了解的 ...

  8. 初识Identity

    初识Identity 摘要 通过本文你将了解ASP.NET身份验证机制,表单认证的基本流程,ASP.NET Membership的一些弊端以及ASP.NET Identity的主要优势. 目录 身份验 ...

  9. php session序列化攻击面浅析

    目录 0x00 首先,session_start()是什么? 0x01 初识php-session序列化机制 0x02 php_serialize引擎(反)序列化测试 0x03 当使用不同的引擎来处理 ...

随机推荐

  1. C++——输入、输出和文件

    一.C++输入和输出概述 1.1.流和缓冲区 C++程序把输入和输出看作字节流.输入时,程序从输入流中抽取字节:输出时,程序将字节插入到输出流中.对于面相文本的程序,每个字节代表一个字符,更通俗地说, ...

  2. Activity中与ListActivity中使用listview区别

    Activity中与ListActivity中使用listview区别 一.Activity中与ListActivity中使用listview区别(本身没多大区别,只是ListActivity在lis ...

  3. 转:如何学习SQL(第一部分:SQL基础)

    转自:http://blog.163.com/mig3719@126/blog/static/285720652010950712271/ 1. 为什么学习SQL 自人类社会形成之日起,社会的运转就在 ...

  4. lx:这么空!什么叫假大空 xy:那我做给你看

    “如果我答应你,你回来了XY,最后没有在一起肯定会怪我:而且我现在没有想好以后会怎么样” 希望你可以看到我的努力!PS : 坚持以后每日至少一篇.编程是一门手艺,手艺人靠手艺养家! ---手艺人

  5. 使用git命令提交远程github仓库的时候提示"rejected"(拒绝)解决办法

    今天使用在自己笔记本本地磁盘上使用Git命令行执行"git push"然后输入github的用户名和密码之后,报如下错误: ![rejected] master->maste ...

  6. Machine Learning - 第7周(Support Vector Machines)

    SVMs are considered by many to be the most powerful 'black box' learning algorithm, and by posing构建 ...

  7. linux笔记:linux常用命令-压缩解压命令

    压缩解压命令:gzip(压缩文件,不保留原文件.这个命令不能压缩目录) 压缩解压命令:gunzip(解压.gz的压缩文件) 压缩解压命令:tar(打包压缩目录或者解压压缩文件.打包的意思是把目录打包成 ...

  8. Android要点记录

    1.Toolbar不能上滑隐藏的原因<!--如果在CoordinatorLayout加上android:fitsSystemWindows="true",而不是在AppLay ...

  9. js中tagName和nodeName

    DOM里常见的三种节点类型(总共有12种,如docment):元素节点,属性节点以及文本节点,例如<h2 class="title">head</h2>,其 ...

  10. [Hadoop 周边] Hadoop资料收集【转】

    原文网址: http://www.iteblog.com/archives/851 最直接的学习参考网站当然是官网啦: http://hadoop.apache.org/ Hadoop http:// ...