一次参加面试被问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到服务器端。
分享到:
相关推荐
在ASP.NET开发中,HttpCookie类是用于处理和管理客户端cookies的重要工具。它允许开发者存储和检索用户在浏览器端的数据,实现用户会话状态管理、个性化设置保存以及身份验证等功能。下面将详细介绍HttpCookie类的...
首先,`Cookie.cs`文件很可能包含了自定义的Cookie管理类,这个类扩展了.NET框架的Cookie功能,提供了更便捷、更强大的API来创建、读取、修改和删除Cookie。下面是一些可能包含在该类中的关键功能: 1. **创建...
这个类主要关注如何使用JavaScript来创建、读取和删除Cookie。 首先,我们来看`getCookie`函数,它是用来读取Cookie的。函数接收一个参数`c_name`,即我们要查找的Cookie的名称。它通过检查`document.cookie`字符串...
.NET框架为Web开发提供了强大的支持,其中包括处理Cookie的能力。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并在用户再次访问同一网站时返回。在C#.net和vb.net中,处理Cookie主要涉及到创建、读取、...
《jQuery Cookie 1.4:JS操作Cookie的利器》 在Web开发中,Cookie作为一种小型文本文件,常被用于存储用户的状态信息,如登录状态、购物车内容等。JavaScript(JS)提供了对Cookie进行操作的能力,而jQuery Cookie...
用C#语言写的ASP.NET公共类实现Cookie的写入,读取,清除功能.
asp.net Cookie通用类,不足之处,还忘提出宝贵意见,谢谢。
它们是由服务器端生成,发送到...在JSP中,利用Cookie类提供的方法,我们可以轻松创建、修改和读取Cookie,从而提供更加个性化的用户体验和服务。理解并熟练掌握Cookie的使用对于任何Web开发者来说都是至关重要的。
### JavaScript操作Cookie类知识点详解 #### 一、JavaScript操作Cookie类的实例用法 1. **设置Cookie** 在JavaScript中,我们可以创建一个Cookie类的实例,然后通过该实例的SetCookie方法来设置Cookie值。例如,...
在Silverlight应用中,虽然不像传统的ASP.NET网页那样可以直接操作Cookie,但依然可以通过HttpCookie类和WebClient类来实现对Cookie的操作。 在Silverlight中使用Cookie,首先要导入System.Windows.Browser命名空间...
在C#编程中,Cookie是一种用于存储客户端...通过这样的自定义Cookie类,开发者可以更便捷地管理和操作Cookie,提高代码的可读性和可维护性。在实际的C#应用程序中,特别是在Web开发场景下,这样的工具类是非常实用的。
这个类(CookieClass)提供了对Cookie进行创建、修改、读取和删除的方法。以下是对这个类及其方法的详细解释: 1. **Array.prototype.splice**: 这个方法被重写以支持对Cookie数组的操作。splice()方法原本用于在...
Cookie操作帮助类通常是为了简化对Cookie的操作而设计的辅助类库,它可以帮助开发者更加高效、方便地创建、读取、更新和删除Cookie。下面我们将详细探讨Cookie的相关知识点以及如何使用一个名为HttpCookieHelper的C#...
创建Cookie时,我们需要实例化Cookie类,设置名称和值,然后通过HttpServletResponse的`addCookie(Cookie cookie)`方法将其添加到响应头中。例如: ```java Cookie cookie = new Cookie("username", "John"); ...
我们定义了两个枚举类型和一个 DLL 导入函数,并实现了一个名为 FullWebBrowserCookie 的类,该类可以获取 Web 浏览器的完整 Cookie。 通过本文,我们学会了如何使用 .net 获取浏览器 Cookie,包括 HttpOnly 类型的...
首先,我们要理解.NET中的Cookie类。`System.Web.HttpCookie`是.NET Framework提供的一个类,用于创建、读取和修改HTTP Cookie。创建Cookie时,我们可以通过实例化HttpCookie对象并设置其属性,如Name(Cookie的名称...
在Java中,我们可以使用HttpCookie类来创建、管理和发送Cookie。工具类可能提供了方便的方法,如设置Cookie、获取Cookie、删除特定Cookie等,帮助开发者更便捷地处理用户的会话信息。 2. **FTP文件传输**: FTP...
简单的Cookie 这是一个非常简单的超轻量级JavaScript cookie类,可根据需要使用。 它有4种简单的方法...设置Cookie Cookie . set ( 'name' , 'value' ) 您也可以使用它来设置到期时间,默认情况下它永不到期。 到期...