coookie

张开发
2026/4/13 3:33:50 15 分钟阅读

分享文章

coookie
Cookie的禁用(熟练)默认情况下浏览器的cookie是被启用的但是其实我们是可以手动的禁用cookie的强烈不建议禁用cookie;Cookie一旦被禁用掉绝大多数互联网的网站都无法登录这个跟我们后续要讲解的session有关。那么我们如何通过程序来通过程序判断用户的浏览器上的cookie是否被禁用了呢其实很简单我们可以通过去刚刚添加的cookie如果没有取到说明cookie被禁用。HttpSession概述会话跟踪之sessionsession也是域对象之一它的范围是在一个会话范围内有效。session既然是域对象那么当然就要有getAttribute()和setAttribute()系列方法了。在一个会话内共享一个session对象所以session中可以保存一个会话内的数据。例如当前用户的信息。session的范围大于request可以在一个会话中多个请求之间共享数据。但session的范围小于ServletContext(application)session不能在多个用户之间共享数据。目前所学过的域对象的作用范围ServletContextHttpSessionHttpServletRequest获取session对象使用request.getSession()方法就可以获取session对象。有了session就不用使用Cookie来跟踪会话了但是session不能像Cookie那样长命一旦用户关闭浏览器窗口那么session就死掉了。HttpSession原理依赖Cookie我们都知道HTTP是无状态协议但是为什么session可以跟踪会话状态呢没错session依赖Cookie。当客户端第一次访问服务器时服务器会为客户端创建一个session对象然后把session对象放到session池中在响应时把sessionId通过Cookie响应给客户端。注意只有在第一次访问时服务器才会创建session给客户端响应sessionId。从此以后就不会了当客户端再次访问服务器时会在请求中带着sessionId给服务器服务器通过sessionId到session池中找到session对象这就可以完成会话跟踪了。也就是说服务器端保存的是session对象而客户端只有sessionId。每次访问都需要通过客户端的sessionId来匹配服务器端的session对象这样用户在session中保存的数据就可以再次被使用了。sessionId是服务器通过Cookie发送给客户端浏览器的这个Cookie的maxAge为-1即只在浏览器内存中存在。如果你关闭所有浏览器窗口那么这个Cookie就会消失了HttpSession失效session失效有如下几个原因session.invalidate()方法注销sessionsession超时Cookie被禁用session-config !-- session的超时时间以分钟为单位 -- session-timeout1/session-timeout /session-configSession和Cookie的区别(精通)session 在服务器端cookie 在客户端浏览器session 默认被存在在服务器的一个文件里不是内存session 的运行依赖 session id而 session id 是存在 cookie 中的也就是说如果浏览器禁用了 cookie 同时 session 也会失效但是可以通过其它方式实现比如在 url 中传递 session_idsession 可以放在 文件、数据库、或内存中都可以。用户验证这种场合一般会用 session 因此维持一个会话的核心就是客户端的唯一标识即 session id

更多文章