会话技术

*会话技术:

  1.会话:一次会话中包含多次请求和响应。

    *一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到一方断开为止

  2.共享数据:在一次会话的范围内的多次请求间,共享数据

  3.方式:

    1.客户端会话技术:Cookie

    2.服务器端会话技术:Session

Cookie:

  1.概念:客户端会话技术,将数据保存到客户端

  2.快速入门:

    *使用步骤:

      1.创建Cookie对象,绑定数据

      2.发送Cookie对象

      3.获取Cookie,拿到数据

//创建cookie对象
Cookie c = new Cookie("msg","hello");
//发送对象
resp.addCookie(c);
//接收对象
Cookie[] cookies = req.getCookies();
//遍历数组
if (cookies != null) {
    for (Cookie cookie : cookies) {
        String name = cookie.getName();
        String value = cookie.getValue();
        System.out.println(name + ":" + value);

    }
}

  3.cookie的细节:

    1.一次可不可以发送多个cookie?

      *可以,可以创建多个cookie对象,使用response调用多次addcookie方法发送cookie

    2.cookie在浏览器能保存多长时间?

      1.默认情况下,放浏览器关闭后,cookie数据被销毁

      2.持久化存储:

         *setMaxAge(int seconds)

            int:正数:将cookie数据写到硬盘的文件中。持久化存储。cookie的存活时间,秒数

              负数:默认值

               零:删除cookie信息

    3.cookie能不能存中文?

      *在tomcat 8之前cookie不能存中文

        *需要将中文数据转码--一般采用url编码

      *在tomcat 8之后cookie可以存储

    4.cookie获取范围多大?

      1.假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中不能共享cookie

        *setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录。 

        如果要共享,则可以将path设置"/”。

      2.不同的tomcat服务期间cookie的共享问题?

        setDomain(String path):如果一级域名相同,那么多个服务器间cookie可以共享

          *setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享。

  4.cookie的特点和作用

    特点:

      1.cookie存储数据在客户端浏览器。

      2.浏览器对于单个cookie的大小有限制,以及对同一个域名下的总cookie数量也有限制。

    作用:

      1.cookie一般用于存储少量的不太敏感的数据

      2.不登陆的情况下,完成服务器对客户端的身份识别

Session:

  1.概念:在服务器会话技术,再一次会话的多次请求间共享数据,将数据保存在服务器端的对象中

  2.快速入门:

    

//获取session
HttpSession session = request.getSession();
//存数据
session.setAttribute("msg","hello");
//获取session
HttpSession session = request.getSession();
//获取数据
Object msg = session.getAttribute("msg");
System.out.println(msg);

  3.原理:Session的实现是依赖于cookie的

  4.细节:

    1.当客户端关闭后,服务器不关闭,两次获取session是否为同一个?

      *默认情况下,不是

      *如果需要相同,则可以创建cookie,键位JSESSIONID,设置最大存活时间,让cookie持久化保存

session.setAttribute("msg","hello");
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);

    2.客户端不关闭,服务器关闭

      *不是同一个,但是要确保数据不丢失

        *session的钝化:

          *在服务器正常关闭之前,将session对象系列化到硬盘上

        *session的活化:

          *在服务器启动后,将session文件转化为内存中session对象即可。

 

    3.session的失效时间?

      1.服务器关闭

      2.session对象调用

      3.session默认失效时间30分钟

        选择性配置修改

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

  5.session的特点:

    1.session用于存储一次会话的多次请求数据,存在于服务器端

    2.session可以存储任意类型,任意大小的数据

    *session于cookie区别:

      1.session储存数据在服务器端,cookie在客户端

      2.session没有数据大小限制,cookie有

      3.session数据相对安全。

posted @ 2023-01-10 17:45  会秃头的小白  阅读(74)  评论(0)    收藏  举报