解释HTTP

    HTTP是一种无连接的协议,如果一个客户端只是单纯地请求一个文件(HTML或GIF),服务器端可以响应给客户端,并不需要知道一连串的请求是否来自于相同的客户端,而且也不需要担心客户端是否处在连接状态。但是这样的通信协议使得服务器端难以判断所连接的客户端是否是同一个人。当进行Web程序开发时,我们必须想办法将相关的请求结合一起,并且努力维持用户的状态在服务器上,这就引出了会话追踪(session tracking)。

:会话与会话追踪

  session中文经常翻译为“会话”,其本来的含义是指有始有终的一系列动作或消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候可以看到这样的话“在一个浏览器会话期间……”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间;如果说“用户在一次会话期间……”这样一句话,它指用户的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程;然而有时候也可能仅仅是指一次连接。session的含义很多,其中的差别只能靠上下文来推断。session tracking(会话追踪)是指一类用来在客户端与服务器之间保持状态的解决方案,简单地说,当一个客户在多个页面间切换时,服务器会保存该用户的信息。

2:实现会话追踪的4种方式会话追踪的实现方式有下列4种方式:

  (1)使用持续Cookies(Persistent Cookies)。(2)重写包含额外参数的URL(URL Rewriting)。(3)建立含有数据的隐藏表单字段(Hidden Form Field)。(4)使用内建session对象。

2.1使用Cookie

Cookie是一个小小的文本文件,它是将会话信息记录在这个文本文件内,每个页面都去Cookie中提取以前的会话信息

Cookie sessionCookie =new Cookie("JSESSIONID", sessionID);sessionCookie .setMaxAge(1*24*60*60);response.addCookie(sessionCookie);

上面这段代码先将会话信息记录在HashMap中,保存在服务器端,并用sessionID标识,然后把sessionID保存在名为“JSESSIONID”的Cookie中。

Cookie[] cookies = request.getCookies();if(cookies!=null){for(int i=0;i<cookies.length;i++){if(cookies[i].getName().equals("JSESSIONID")){sessionid = cookies[i].getValue();break;}
}if(sessionid!=null){sessionInfo = globalTable.get(sessionid);//We can use the sessionInfo to get value that we want}}用户请求到达服务器后,先从Cookie中取出sessionID,然后从HashMap中取出会话信息。这样就实现了会话追踪。

URL 重写

URL重写是利用GET的方法,在URL的尾部添加一些额外的参数来到达会话跟踪Session  的目的,服务器将这个标识符与它所存储的有关会话的数据关联起来使用URL重写的优点是Cookie被禁用或者根本不支持的情况下依旧能够工作。但也有很多缺点:1. 必须对所有指向您的网站的URL进行编码。2. 所有页面必须动态生成。3. 不能使用预先记录下来的URL进行访问,或者从其他网站链接进行访问。2.3:隐藏表单字段隐藏表单字段的方法,是利用HTML内hidden的属性,把客户端的信息,在用户不察觉的情形下,偷偷地随着请求一起传送给到服务器处理,这样一来,就可以进行会话跟踪的任务了。可以下列的方法来做隐藏表单字段的会话追踪。<input type="hidden" name="userID" value="15">然后将重要的用户信息,如ID之类独一无二的数据,以隐藏字段的方式传送给服务器。隐藏字段的优点在于session数据传送到服务器端时,并不象GET的方法,会将session数据保露在URL之上。不过这种做法还是有它的缺点:一旦session数据储存在隐藏字段中,就仍然有暴露数据的危机,因为只要用户直接观看HTML的源文件,session数据将会暴露无疑。这将造成安全上的漏洞,特别当用户数据是依赖于用户ID、密码来取得的时候,将会有被盗用的危险。另外这种方法只适用特定的一个流程,不适用于通常意义的会话跟踪。

转载于:https://www.cnblogs.com/qichunlin/p/9495913.html

2018.8.18 servlet使用的会话跟踪除session外还有哪些方式相关推荐

  1. java logout session_会话跟踪技术--session的使用

    会话跟踪技术--session的使用 会话跟踪: 1.使用隐藏表单字段 2.URL重写 http://host/path/file.jsp?sessionid=landril 3.持久Cookie 4 ...

  2. 【Servlet】Cookie会话跟踪技术

    Cookie Cookie技术是一种在客户端保持会话跟踪的解决方案,会话数据保存在客户端浏览器. Cookie在用户第一次访问服务器时,由服务器通过响应头的方式发送给客户端浏览器:当用户再次向服务器发 ...

  3. 会话跟踪之Session

    Session是服务端使用记录客户端状态的一种机制,Session使用简单,但是和Cookie相比,增加了服务器的存储压力[因为为了追求速度,服务器将Session放置在了内存中].Cookie是保存 ...

  4. 【Servlet】Session会话跟踪技术

    Session Session是指使用HttpSession对象实现会话跟踪的技术,是一种在服务器端保持会话跟踪的解决方案. HttpSession对象是javax.servlet.http.Http ...

  5. java 4种跟踪会话技术_会话跟踪技术

    一.会话跟踪技术 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中共享数据,这就是会话跟踪技术 会话路径技术使用Cookie ...

  6. JavaWeb-WEB核心7 会话技术 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用(钝化、活化)完善用户登录注册案例的功能

    会话技术 今日目标 理解什么是会话跟踪技术 掌握Cookie的使用 掌握Session的使用 完善用户登录注册案例的功能 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理 ...

  7. JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域

    会话跟踪技术Session.Cookie.url.隐藏表单域 (一)Session session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大. 浏览器第一次访问服务器时会创建一个ses ...

  8. 13.2.6 会话跟踪技术

    HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态. 但HTTP协议中可以使用Cookie来完成会话跟踪! 在Web开发中,使用session来完成会话跟踪,session ...

  9. java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术

    原标题:IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术 Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报 ...

最新文章

  1. 恢复VMware vSphere已孤立的虚拟机
  2. 【Python】青少年蓝桥杯_每日一题_3.05_排列组合
  3. python tutorial_Python Tutorial笔记
  4. 数据库的语言——SQL
  5. js封装函数_JavaScript基础-如何封装函数来改变元素的位置
  6. 使用Amalgamate将C/C++项目合并成一个.h/.c[pp]文件
  7. CMake-add_executable()
  8. 单机按钮来图片轮播_原生js如何实现轮播图效果?
  9. Python 基础课程第十一天
  10. new和malloc的区别(详细)
  11. OptiSystem:光纤陀螺仿真-Open-Loop IFOG-Matlab联合仿真
  12. Navicat连接Oracle数据库
  13. 除了WhatsApp以外,还有哪些即时聊天软件?
  14. 计算机里怎样打字,电脑知识:如何电脑快速打字
  15. 计算机绘图AUTOcad2007证要考吗,计算机绘图和 与考证(AutoCAD2005).ppt
  16. 单片机怎么通过按键控制计时器的开始和停止_《搞机作战室》机械师PX780控制中心软件使用教程...
  17. 对旅游行业APP前五名(个人观点)优缺点的简析
  18. 安大计算机学院ACM,安徽大学计算机科学与技术学院硕士生导师:张磊
  19. 长沙有哪些点餐系统服务商?长沙点菜软件哪家好?
  20. Javascript中引用数据类型

热门文章

  1. Liux技巧总结之--解压各种文件
  2. powerdesigner箭头如何画_用Scratch编程画几何图形:如何画多边形
  3. 如何在电脑上创建python_python怎么创建类Python中的除法
  4. gdiplus判断一个点是否在圆弧线上_上挑眼型会更显老吗?杨丞琳和张雨绮示范了2条不同路线...
  5. android6.0 主题,Android 6.0 DatePickerDialog主题
  6. mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...
  7. nginx 负载均衡配置_LINUX系统nginx负载均衡配置
  8. android获取mysql数据_java – Android从mySql获取数据
  9. c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...
  10. C++编程进阶9(如何将构造函数和非成员函数虚化、无锁单例模式)