cookie类

xiaoxiao2022-09-22  45

一次参加面试被问cookie保存什么信息,没有回答上,记得在一本书上看过,但不知道是哪部书,回来翻了半天没找到,今天偶尔看到了,记下: Cookie类封装cookie,cookie保存在客户端并且包含状态信息。 servlet能通过HttpServletResponse接口的addCookie()方法将cookie写入用户机器,然后,cookie中的数据包含在发送到浏览器的HTTP响应的标题中。 cookie的名称和值保存在用户的机器上。为每个cookie保存的信息包括如下内容: cookie的名 cookie的值 cookie的失效日期 cookie的域名和路径 失效日期决定什么时候从用户的机器上删除cookie。如果没有明确地指定失效日期,则在当前的浏览器会话结束时会删除该cookie,否则,cookie保存在用户机器上的一个文件中。 cookie的域名和路径决定什么时候cookie包含在HTTP的标题中。如果用户输入的URL的域名和路径与这些值匹配,则提供该cookie给Web服务器,否则不提供。 (以上摘自Java:The Complete Reference,Seventh Edition Herbert Schildt 著,张良华、吴明飞 译) 一、cookie与session的区别 cookie 把信息保留在客户端,把用户信息保留在用户本地不必总访问服务器。当发出页面请求时,把cookie里的信息从客户端发到服务器。一次有效,不能跨窗口。 session 的信息保存在服务器端,通过消耗服务器内存来保存信息。 是用户全局变量,对该用户的所有操作过程都有效。为每个用户分配一个sessionId,用来唯一的标识客户,用session.Abandon只会注销当前客户。 只要页面不关闭就一直存在,可以跨窗口存在。session主要用于在页面见传递变量。 总结:Cookies适合做保存用户的个人设置、爱好等,Session适合做客户的身份验证。 二、application、session、request、page 它们的作用范围由大到小。 page只在当前页面有效。 request在一次请求的全过程中有效。包括用户请求访问的当前web组件,以及,和当前web组建共享同一请求的其他web组件(比如jsp页面中include的,forward标记包含的)。存放在HttpServletRequest对象中。 一次请求的全过程:指从服务器端代码(如jsp、Servlet)接受请求并响应开始,至响应完毕(无结果或将结果完全送回客户端并断开连接)的期间。 session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中。 application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。 总结:当数据只需要在下一个forward有用时,用request就够了; 若数据不只是在下一个forward有用时,就用session。 上下文,环境信息之类的,用application。 另附一篇摘录: 1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。   2、session中保存的是对象,cookie中保存的是字符串。   3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。   4、session默认需要借助cookie才能正常工作。如果客户端完全禁止cookie,session,这种方法将失效。   但是如果服务器端启用了url编码,也就是用 URLEncoder.encode("index.jsp?id=3","UTF-8");   把所有的url编码了,则会在url后面出现如下类似的东西   index.jsp:jsessionid=fdsaffjdlksfd124324lkdjsf?id=3   服务器通过这个进行session的判断   5 session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存   6 COOKIE:是服务端向客户端写入的小的片段信息。session信息保存在服务器缓存区,不会在客户端显现。当你第一次登陆一个网站,服务器向你的机器写得片段信息。你可以在Internet选项中找到存放cookie的文件夹。如果不删除,cookie就一直在这个文件夹中。下次访问时会自动发送对应的Cookie到服务器端。
转载请注明原文地址: https://www.6miu.com/read-4977766.html

最新回复(0)