网站建设与规划结课论文,为什么别的电脑能打开的网站我的电脑打不开,制作书签的步骤,出售淘宝店铺的平台⭐作者介绍#xff1a;大二本科网络工程专业在读#xff0c;持续学习Java#xff0c;努力输出优质文章 ⭐作者主页#xff1a;逐梦苍穹 ⭐所属专栏#xff1a;Java Web 目录Cookie1、工作原理2、如何使用2.1、发送Cookie2.2、获取Cookie3、Cookie的存活时间4、中文错误Coo… ⭐作者介绍大二本科网络工程专业在读持续学习Java努力输出优质文章 ⭐作者主页逐梦苍穹 ⭐所属专栏Java Web 目录Cookie1、工作原理2、如何使用2.1、发送Cookie2.2、获取Cookie3、Cookie的存活时间4、中文错误Cookie
Cookie客户端会话技术将数据保存到客户端以后每次请求都携带Cookie数据进行访问。 Cookie是一种用于在Web浏览器和Web服务器之间存储数据的小型文本文件。它通过在Web浏览器中存储一个键值对使Web应用程序能够跟踪用户的活动和状态。
1、工作原理
下面是Cookie的工作原理
当用户访问一个Web应用程序时Web服务器会向Web浏览器发送一组Cookie。每个Cookie都包含一个键值对例如“usernamejohn”其中“username”是Cookie的名称而“john”是它的值。当Web浏览器接收到Cookie后它会将Cookie保存在用户的计算机上。每当用户再次访问该Web应用程序时Web浏览器会将Cookie发送回Web服务器。Web服务器可以使用Cookie来跟踪用户的活动和状态。例如当用户登录时Web服务器可以创建一个Cookie将用户的登录信息存储在Cookie中并将其发送回Web浏览器。当用户浏览网站时Web应用程序可以使用该Cookie来识别用户并提供个性化的体验。由于Cookie存储在用户的计算机上因此它们可以在用户关闭Web浏览器后继续存在。这使得Web应用程序可以在用户下次访问时保留用户的活动和状态。
需要注意的是Cookie是由Web服务器设置和使用的而不是由Web浏览器设置和使用的。 此外Cookie存储在用户的计算机上并且可以被删除或修改因此它们不是绝对可信的。 因此在处理敏感信息时应该使用其他更可靠的技术例如使用HTTPS协议来加密数据传输。
对于Cookie的实现原理是基于HTTP协议的,其中设计到HTTP协议中的两个请求头信息: ● 响应头:set-cookie ● 请求头: cookie
对于ServletA响应数据的时候Tomcat服务器都是基于HTTP协议来响应数据当Tomcat发现后端要返回的是一个Cookie对象之后Tomcat就会在响应头中添加一行数据Set-Cookie:usernamezs浏览器获取到响应结果后从响应头中就可以获取到Set-Cookie对应值usernamezs,并将数据存储在浏览器的内存中浏览器再次发送请求给ServletB的时候浏览器会自动在请求头中添加Cookie: usernamezs发送给服务端ServletBRequest对象会把请求头中cookie对应的值封装成一个个Cookie对象最终形成一个数组ServletB通过Request对象获取到Cookie[]后就可以从中获取自己需要的数据
2、如何使用
具体使用步骤分为发送Cookie和获取Cookie
2.1、发送Cookie
创建Cookie对象并设置数据-Cookie cookie new Cookie(“key”,“value”);使用response对象发送Cookie到客户端浏览器-response.addCookie(cookie);
编写代码验证
在浏览器访问这个cookieServlet资源然后查看浏览器缓存的Cookie
可以看到Cookie发送成功了
2.2、获取Cookie
使用request对象获取客户端携带的所有Cookie-Cookie[] cookies request.getCookies();遍历数组cookies获取每一个Cookie对象使用Cookie对象方法获取数据-cookie.getName(); cookie.getValue()
编写代码验证
可以看到控制台成功打印出了获取到的Cookie对象
3、Cookie的存活时间
当发送请求到ServletB之前如果把浏览器关闭然后再重新访问资源可以发现ServletB是获取不到Cookie对象的。 因为在默认情况下Cookie是存储在浏览器缓存中当浏览器关闭时内存释放Cookie则同时被销毁。 所以如何实现将Cookie数据存储持久化通过Cookie的一个APIsetMaxAge来实现。
设置Cookie存活时间-setMaxAge(int seconds) 参数second为
正数将Cookie写入浏览器所在电脑的硬盘持久化存储。到时间自动删除负数默认值Cookie在当前浏览器内存中当浏览器关闭则Cookie被销毁零删除对应Cookie
4、中文错误
Cookie对象如果存储中文数据会存在问题访问时浏览器显示500错误信息码。 所以Cookie是不能直接存储中文的。
解决方式URL编码。
采用URLEncoder.encode()对中文进行编码将编码后的值存入Cookie中在另一个服务器中获取Cookie的值获取之后使用URLDecoder.decode()解码
代码实现如下 ①编码存Cookie
②解码获取Cookie