你所了解的cookie、session是这些吗?

Cookie:浏览器端的会话技术

 

1.工作流程:用户去访问网站,服务器会产生了键值对的数据(cookie),业务完成之后,返回的时候,带上一个set-cookie的响应头,浏览器会将cookie保存在浏览器端,第二次去访问网站的时候,浏览器会根据一定的规则把cookie信息带上,通过cookie的请求头带上.

 

2.需要用到的api有:

         Cookie c= new Cookie(“姓名”,”值”);

         c.getName()   c.getValue()

         添加cookie:  response.addCookie(c)

         获取cookie:  Cookie[] cookies=request.getCookies();先判空然后对数组进行循环,调用每个cookie的getName()方法找到目标cookie

 

3.持久化的cookie

         设置超时时间:

                  setMaxAge(int 秒值)

                          如果设置为0会删除该cookie,删除同路径同名的cookie

         设置路径:

                  setPath(“路径”) //你访问了一个网站,返回cookie的时候可以设置路径,第二次访问网站的时候,检查你第二次访问的地址是否是cookie的路径所包含,如果包含则带回去,否则不带回去

http://localhost/day12/aa/bb/cc

默认路径:

         /day12/aa/bb/

         以/带头+项目名/路径的目录名

规定路径:

         以/打头     以/结束

4.Cookie限制:

1.      cookie不能跨浏览器;

2.      http协议对cookie有限制

3.      cookie不支持中文

 

 

session:

保存在服务器端的会话技术:

1.工作流程:

                   第一次浏览器访问服务器,服务器检查是否携带了JSESSIONID的cookie

                            没有携带JSESSIONID

                                    服务器会在内存中开辟一块空间(也就是创建一个session),并且会产生一个随机的唯一的ID代表这块空间,浏览器会保存该cookie,以后访问都带上.

                            携带着JSESSIONID

                                    携带着JSESSIONID在session池中查找对应的session

                                             找到了:

                                                      进行正常的业务操作,操作session,还会把SESSIONID带回来

                                             找不到:

                                                      服务器会在内存中开辟一块空间(也就是创建一个session),并且会产生一个随机的唯一的ID代表这块空间,浏览器会保存该cookie,以后访问都带上.

 

2.Api:

          Request.getSession()  获得session

操作session

          Xxxattribute(“key”,”value”);

可以自定义key,value(setAttribute),获取sessiongetAttribute(字段名)

3.Session的生命周期:

          在调用getSession()方法时候session就创建了

<session-config>

          <session-timeout>30</session-timeout>设置session的超时时间

</session-config>  放置到自己项目的web.xml中

 

用方法设置过期时间:

          setMaxInactiveInterval(int秒数) 以秒数为单位设置过期时间

手动销毁session

          Session.invalidate() 

服务器正常关闭   属于钝化

          服务器非正常关闭

Session中存储的数据是私有的

面试中cookie和session的问题:

1.cookie和session的区别

1)cookie的数据存放在客户的浏览器上,session数据存放在服务器上;

2)cookie相对而言不是特别安全,黑客可以分析存放在本地的cookie进行cookie欺骗,考虑到安全应该使用session;

3)session在一定的时间内保存在服务器上,当访问增多,会大量占用服务器的性能,要考虑减轻服务器性能的话推荐使用cookie

4)单个cookie保存的数据不能超过4K,很多浏览器限制一个站点最多保存20个cookie

2.会话cookie和持久cookie的区别

1)如果不设置过期时间,则表示这个cookie的生命周期为浏览器会话期间,关闭浏览器窗口后,cookie就消失了,cookie也就不存在了,这种为会话cookie.会话cookie一般不保存在硬盘上而是保存在内存里;

2)如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭浏览器再打开,这些cookie依然有效直到超过设置的时间点;

3)存储在硬盘上的cookie可以在不同的浏览器中共享,对于保存在内存的cookie,不同的浏览器有不同的处理方式

 

 

 

         

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网的发展和普及,网站和应用程序越来越多,用户也越来越多。对于这些网站和应用程序来说,如何记录用户的信息和状态是一个非常重要的问题,因为只有这样才能提供更好的服务和更好的用户体验。而cookiesession、token就是三种常用的记录用户信息和状态的方式。 首先,cookie是一种存储在客户端浏览器中的文本文件,用于存储用户的一些信息。当用户在浏览器中打开一个网站时,网站服务器会发送一个包含一些信息的cookie给用户的浏览器。浏览器在接收到cookie后会以键值对的形式将它们存储在本地,然后在下一次访问该网站时再将cookie发送给服务器。服务器通过读取这些cookie中的信息,就可以知道该用户的一些状态和偏好,从而提供更好的服务。 其次,session是一种服务器端技术,用于记录用户的会话状态。当用户第一次访问一个网站时,网站服务器会为该用户创建一个session,然后在服务器端存储用户的一些信息。当用户进行一些操作时,服务器端会根据该用户的session来判断其当前的状态和权限,并根据这些信息进行相应的处理。当用户关闭浏览器时,与该用户相关的session会被销毁。 最后,token是一种用于验证用户身份的令牌。当用户输入用户名和密码进行登录时,服务器会生成一个token,并将该token返回给客户端。客户端在后续的请求中需要带上该token,服务器收到请求后会根据token来验证用户身份,从而决定是否允许该请求。token不存储在客户端,而是存储在服务器端的数据库或者内存中,因此可以防止一些与cookie相关的安全问题,例如CSRF攻击和 XSS攻击。 总的来说,cookiesession、token可以作为不同的方式来记录用户的信息和状态,这些方式都有自己的优缺点,应该根据具体的需求来选择适合的方式。同时,为了确保安全性,应该采取一些措施来减少一些可能出现的安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值