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)
下面是它们对象的区别:
Application用于保存所有用户共用的数据信息,如果被保存的数据在应用程序生存期内根本不会改变或很少改变,用它。但是在中有个,可能更好点。如果要使用application,一个需要考虑的问题是任何写操作都有要在application_onstart事件中(Global.asax)中完成。尽管使用application.lock和application.unlock方法来避免操作的同步,但是它串行化了对application的请求,当大时会造成性能瓶颈。因此最好不要用它存取大的数据集。
使用方法:
application.setAttribute(String name,Object obj); //保存application对象属性
application.getAttribute(String name); //获取application对象属性
application.removeAttribute(String name); //移除application对象的指定属性
类型转换
int n=Integer.parseInt(application.getAttribute("number").toString());
Session 用于保存每个用户的专用信息,它的生存期是用户持续请求时间再加上一段时间(可以在中设置,默认是20分钟)。Session中的信息保存在服务器的内存中,当然你也可以设置它的保存方法(如存在中)。由于用户停止使用程序后它仍然在内存中保持一段时间,因此使用保存用户数据的方法效率很低。对于小量的数据。使用Session还是一个不错的选择。
使用方法:
session.setAttribute(String name,Object obj); //保存
session.getAttribute(String name); //获取,返回值是object类型,需调用toString()方法转换
session.invalidate(); //销毁session
Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它保存非敏感性的内容。保存时间可以根据需要设置。如果没有设置Cookie失效时间,它仅保存至浏览器关闭。如果将Cookie设置为Min Value,则表示它永不过期。Cookie存储量受到很大限制,一般浏览器支持最大容量为4096字节。因此不能用来存储大量数据。由于并非所有浏览器都支持Cookie,并且它是以明文方式保存的,所以最好不要保存敏感性的内容。否则会影响。
使用方法:
Cookie[ ] cookie = request.getCookies(); //从request中获取Cookie对象的集合
//存
Response.Cookies["name"].Value = "majcms";
//取
String username = Response.Cookies["name"].Value;
转载于:https://my.oschina.net/u/1790483/blog/278598