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

Cookie,Session和Application的区别
我自己总结的。希望大家来指正和补充

Cookie: ①存在于客户端(可被阻止)
  ②只能是文本文档
  ③如果设置了期限值,则写入客户端的文件;
  如果没有,它只对本窗口或其子窗口有效,其它窗口不能访问该Cookie
  ④在Servlet/JSP中设置的Cookie可以被同路径下或其子路径的Servlet/JSP访问,父路径不可以
  ○注:这里的路径是指URL,而不是Web文件的目录
Session: ①存在于服务器端
  ②每个Session对应一个窗口,用SessionID标识,这个Session为该窗口及其子窗口共享
  ③有两种实现方式:a.使用Cookie(在Cookie可用时)b.URL重写(在Cookie被禁用时)
  ④没有访问路径的问题。同一个WebApplication下的Servlet/JSP设置的Session可以被互相访问
  前提是:同一个浏览器窗口或其子窗口
Application:与一个Web应用程序相对应,该应用程序下所有的Servlet/JSP共用该Application中的信息(ServletContext)
   




------解决方案--------------------
最根本的应该是这样!:1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。 

2、session中保存的是对象,cookie中保存的是字符串。 

3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,
那么同一个网站中不同路径下的cookie互相是访问不到的。 

4、session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。 但是如果服务器端启用了url编码,也就是用 
URLEncoder.encode()把所有的url编码了,则会在url后面出现如下类似的东西 
index.jsp:jsessionid=fdsaffjdlks;jaf;lkdjsf 

服务器通过这个进行session的判断 


5 session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存 



------解决方案--------------------
Cookie存储的信息是放到客户端的,用户在访问服务器端页面时,必然在客户端和服务器端之间频繁交换信息,影响了程序的性能。而Session由于存储在服务器内存中,因此不存在这个问题。不过,Session存储的信息是临时的,用户一旦关闭浏览器,状态即失去。而Cookie则相反。COOKIE 是本地文件,是 40 大盗在阿里巴巴家做的记号,或者是送牛奶的人在你家门口钉的箱子。 



Application状态为应用程序提供了一个全局的状态。所有客户都可以使用该状态。从设计的角度来说,我们通常用Application来存储一些标准的数据。同时,我们在使用它时要注意避免性能的降低,存储的数据尽可能提供给客户只读的功能。 APPLICATION 是公共浴池。在这里能看见所有人,包括 ppmm 哦:)。 


Session和客户端的Cookie是有关的,当客户关掉Cookie时,Session就失效了,SESSION 是服务器端内存,是你洗澡时浴池发给你的钥匙。自己专用,可以开自己的好多箱子。