Cookie & Session(MarkDown版)

什么是cookie?

客户端(浏览器)会话技术,将数据保存到客户端

  • 什么是会话?

    浏览器给服务器发送请求,会话建立。浏览器关闭,会话停止。一次会话包含多次请求和响应​。

    注:就像是两个人会谈,你问一句我答一句,一问一答就是一次请求和一次响应,最后会谈结束,那么这次会话就结束了,也就是浏览器关闭了。

    • 会话有几种方式?
      两种。
      ​1.客户端会话技术:cookie
      2.服务器端会话技术:sess​ion
  • cookie的原理是什么?
    基于 响应头set-cookie 和 请求头cookie 实现

  • cookie的使用步骤是什么?

    • 创建Cookie对象,绑定数据
      new Cookie(String name , String value)​​
    • 发送Cookie对象
      response.addCookie(Cookie cookie)
    • 获取Cookie,拿到数据
      Cookie[] request.getCookies()
  • Cookie的细节有哪些?

    • 一次可不可以发送多个cookie?
      可以。创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。

    • cookie在浏览器中保存多长时间?

      默认情况下,浏览器关闭,cookie数据被销毁。但可以通过setMaxAge(int seconds)方法进行持久化存储

      • sextMaxAge(int seconds)方法有哪些注意点?
        • seconds为正数
          将cookie数据存储到硬盘中持久化存储,指定cookie存活时间,到期后,cookie自动失效。
        • seconds为负数
          默认值,浏览器一关就没了
        • seconds为零
          删除cookie信息
    • cookie能不能存中文?
      tomcat8之前,不能存中文。tomcat8之后,开始支持中文数据,但是特殊字符还不支持。建议用url编码存储,url解码解析。

    • cookie能否共享?

      • 在一个tomcat服务器中部署多个web项目,这些项目中的cookie能否共享?
        默认情况下,不能共享。但可以使用setPath方法。设置cookie的获取范围。默认情况下,设置当前的虚拟目录。如果要共享,可以将path设为“/”。
      • 不同的tomcat服务器间,cookie能否共享?
        如果设置一级域名相同,则可以共享。方法:setDomain(String path).例如:setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中的cookie可以共享。
  • cookie的特点是什么?

    • 存储的数据在客户端浏览器
    • 浏览器对单个cookie有大小限制(4kb),以及同一个cookie下涉及的域名也有限制。
  • cookie的作用是什么?

    • 用于存储少量不太敏感的数据
    • 在不登录的情况下,完成服务器对客户端的身份识别。
  • 如何删除cookie ?

    新建一个同名cookie ,设置setMaxAge() 为0 ,写入到response

  • cookie有哪些常用api ?

    • getName(); -- 获取cookie的名称

    • getValue(); -- 获取cookie的值

    • setDomain(String domain); -- 设置Cookie的有效域名.

    • setPath(String path); -- 设置cookie的获取范围。

    • setMaxAge(int maxAge); -- 设置Cookie的有效时间.

  • cookie的分类有哪些?

    • 会话级别:浏览器关闭,cookie消失
    • 持久级别:通过设置cookie的setMaxAge()来设置cookie的存活时间

    什么是Session?

    服务器端会话技术,在会话的多次请求间共享数据,将数据保存在服务器端的对象中。

    • Session的原理是什么?

      session的实现是依赖于cookie的。用户第一次访问的时候,通过getSession()方法,就会创建一个session,响应的时候将sessionId通过cookie传回到浏览器,下次访问的时候会将sessionid带回,getSession()方法就通过sessionId找到之前创建的session。(关闭浏览器再打开,cookie中存的sessionid已经被销毁,所以会再次创建一个session)

    • Session的使用步骤是什么?

      • .获取HttpSession对象
        HttpSession session = request.getSession();
      • 使用HttpSession对象
        1.Object getAttribute(String name)
        2.void setAttribute(String name,Object value)​
        3.void removeAtrribute(String name)
    • Session的细节有哪些?

      • 当客户端关闭。服务器不关闭。两次获取的session是否为同一个?
        默认情况下不是。但可以通过创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化存储,使session相同。
        Cookie c = new Cookie("JSESSIONID",session.getId());
        c.setMaxAge(60*60);
        ​response.addCookie(c);

      • 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

        不是同一个。服务器关闭后,为确保数据不丢失,tomcat会自动完成session的钝化和session的活化。

        • 什么是session的钝化?
          在服务器关闭前,将session对象系列化到硬盘上。

        • 什么是session的活化?
          在服务器启动后,将ession文件转化为内存中的session对象。

          Cookie c = new Cookie("JSESSIONID",session.getId());

          c.setMaxAge(60*60);

          response.addCookie(c);

        • 补充:什么是序列化?

          将对象的状态信息转换为可以存储或传输的形式的过程

  • session什么时候被销毁?

    • 服务器关闭
    • session对象调用invalidate(),可以让session自杀。
    • 30分钟后,session会默认失效

      30
  • session的特点是什么?

    • 存储的是会话中多次请求的数据,存在服务器端
    • 可以存储任意类型,任意大小的数据。
  • Session与Cookie有什么区别?
    • session存储数据在服务器端,cookie存储在客户端
    • session数据没有大小限制,cookie有
    • session数据安全,cookie相对不安全。

JSP是什么?

Java server pages : java 服务器端页面。
可以理解为,一个既可以写html,也可以写Java代码的特殊页面。用于简化书写。

JSP = Java代码 + HTML的元素 + JSP内置东西(后面再学)

  • JSP的原理是什么?
    本质上就是Servlet

  • Jsp什么时候被转化成java文件?转化几次?

    Jsp文件会被转化成Java文件,存放于Tomcat的work目录下

  • JSP的脚本是什么?

    JSP定义Java代码的方式

    • JSP的脚本如何定义?

      • <% 代码 %>
        services方法可以定义什么,该脚本就能定义什么
      • <%! 代码 %>
        在jsp转换后的Java类的成员位置
      • <%= 代码 %>
        会输出到页面,输出语句可以定义什么,该脚本就可以定义什么

      注意:第一种和第二种里面的Java代码要写分号,第三种不能加分号!!!

  • JSP的内置对象是什么?

    在jsp页面中,不需要获取和创建,可以直接使用的对象

    • Jsp有几个内置对象?

      9个,今天只学3个

      • request:请求

      • response:响应

      • out

        • out是什么?
          字符输出流对象

        • out有什么作用?

          将数据输出到页面,和 response.getWriter() 类似

          • response.getWriter()和out.write()有什么区别?
            • 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
            • response.getWriter()数据输出永远在out.write()之前

猜你喜欢

转载自www.cnblogs.com/ccav1/p/10172048.html