--个人理解会存在些错误仅供参考!!!
----浏览器保持会话状态原理
用户发送一次请求,服务器端会检索报文中是否存在sessionid不存在,就分配一个写到cookie当中,存在
浏览器的缓存中,当再次请求时,又被发送到服务器端,检索有的话,说明是同一客户端;
---session客户端原理:
当用户发出请求后,就会在服务端开辟一块空间来存储session对象,浏览器通过发送服务端的cookie中的sessionid就能找到唯一标识的session;
session也是用的对象池技术;
---viewstate原理:
有两个问题:当客户端提交表单,并封装成http报文通过socket发给服务端,服务器怎么会知道用户点击了哪
个按钮呢?那文本框的exchanged事件又是怎么触发的呢? 其实就是添加了hidden隐藏域标记;打开浏览器页面后台代码,会看到许多乱码,而这些乱码提交给服务器, 就会生成存储页面状态的原始数据;这些数据就告诉服务器客户端做了哪些事情, exchanged时间,通过比较隐藏域的存储的值和新状态的值,就可以知道,值是否发生了变化,是否要触发 exchanged事件。处理完成后,又会将新的viewstate覆盖原来的viewstate,重新生成hidden给客户端,来就行 下一次的提交。
--cookie查看http请求报文中就可以知道cookie会随报文来回传递。后台通过request可是获取cookie,通过response设置cookie,当随响应报文传输到客户端,会加载到浏览器的cookie中。这样cookie就可以承载数据了。