Session初识
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中包含了会话标识,那么其他人可能与当前浏览者使用同一会话对象,这样可能会暴露隐私信息。
最新文章
- VS中逻辑文件夹与实际文件夹
- 【ASC 23】G. ACdream 1429 Rectangular Polygon --DP
- Zabbix性能优化
- berkeley db中 dirty read的实现
- IOS开发中返回值为null时的处理
- opengl中拾取操作的实现
- 【CITE】利用鼠标绘图C#
- linux read命令详解
- jQuery关于文字内容溢出用点点点(…)省略号表示
- jcarousellite 实现图片列表滚动
- c#:类 相关练习;
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- 网页制作之html基础学习5-background-position用法
- tabBar 选中默认蓝色 ,取消选中(自定义)
- 电脑上的windows键突然失灵了,肿么办
- Mac环境下mysql初始化密码问题--If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
- C#中DataGridView 对XML文档的使用
- 用Python学分析 - 二项分布
- Intellij IDEA神器居然还有这些小技巧
- SQL DDL 数据定义语句