日期:2014-05-19  浏览次数:20673 次

【JSP四种会话跟踪技术】????????????????????????????????

1. page session request application

2. cookie session url参数 隐藏域  

到底是哪个对啊??

------解决方案--------------------
隐藏域?
------解决方案--------------------
第一个肯定是错误的。
至于第二个嘛,我也不大认同。
在我的印象当中,如果要实现会话机制,就必须通过sesison。因为session是服务器端保存一次会话信息的唯一数据载体。。。


至于实现会话跟踪的技术,无非就是让每一次请求到达服务器时,准确的获取到已有的session。
我记得就三种吧:
1。cookie:在浏览器不禁用掉cookie的情况下,浏览器的每次请求都会自动带上cookie中保存的sessionId到服务器,这时候,服务器会根据sessionId获得到相应的session。
2。隐藏表单域:在页面上使用隐藏的表单域保存sessionId,每次页面的提交都会带上这个隐藏表单域里面的sessionId,这时候,服务器也能根据隐藏表单域里面的sessionId获取到相应的session
3。url重写:其实现机制也就是在页面上所有的连接地址后面都追加上sessionId的键值对,这样服务器也能根据连接后面跟随的sessionId获取到相应的session。
------解决方案--------------------

探讨
第一个肯定是错误的。
至于第二个嘛,我也不大认同。
在我的印象当中,如果要实现会话机制,就必须通过sesison。因为session是服务器端保存一次会话信息的唯一数据载体。。。


------解决方案--------------------
解释四种会话跟踪技术?
解答:隐藏表单域、URL 重写,Cookie、Session。
1).隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。
2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
在客户端计算机重启后它仍可以保留其值。
4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话
------解决方案--------------------
解释四种会话跟踪技术?
解答:隐藏表单域、URL 重写,Cookie、Session。
1).隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。
2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
在客户端计算机重启后它仍可以保留其值。
4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话
------解决方案--------------------
number two!
number one是四个内置对象
------解决方案--------------------
既然是考题,其答案就未必准确;楼主我相信你自己其实可以推导出来。

所谓会话,本质上就是客户端和服务器端所约定的一个“标识”甚至可以说“暗号”(为什么我说是暗号,我最后再进行解释下),这个“暗号”用于客户端向服务器端标识自己的访问身份,从而服务器端可以为这个身份保存一些临时上下文数据,从而简化业务操作。J2EE应用中比较有名的“暗号”就是JSessionId。

所以对于2的四个选项,就是是否能用于客户端向服务器端传递暗号?
◎ cookie:应该都知道Cookie内容会在每次访问服务器时自动加入到HTTP请求的head中;可以。
◎ session:这个是本题目的主要败笔,会话跟踪主要就是跟踪session,岂不是自己推证自己了?扯淡。
◎ url参数:URL参数,自然可以用于传递信息,甚至有些网站为了支持客户端禁用Cookie的情况,特意支持将JSessionId写在URL的做法;可以。
◎ 隐藏域:说白了就是FORM中type为hidden的INPUT标签,显然可以用POST等方式传递数据;可以。

所以我个人认为,答案并不准确。当然实在要选,貌似也只能选2了。


另外补充下关于“暗号”的说法。
所谓“暗号”就有泄漏的问题,你喊一句“天王盖地虎”,他喊“宝塔镇河妖”,对上暗号就以为身份对了。可惜万一暗号被别人知道了呢?岂不是就让服务器把别人当成你了?

实际上JSessionId就有这样的问题。
这就是赫赫有名的“会话劫持”,具体情况也很清楚了,就是你跟服务器约定好的JSessionId,很不幸被恶意第三方知道了,而且你的身份还很不幸的是个Admin,那么这事情就玩大了,恶意第三方就可以带着这个暗号找服务器:“哥们,把数据都给老子查出来,然后全删了”。服务器自然是:“喳~~~”。

具体就不乱扯了,喜欢的同学自己Google好了。
------解决方案--------------------
选2吧。
1是四个内置对象。