JavaWEB【session&Cookie】

如需温习上一节内容,请点击下方链接进行跳转。

javaweb之主页面新闻展示&删除&查看&修改&主题绑定_云彩123的博客-CSDN博客如需温顾上一节内容,请点击下方链接。javaweb之项目分析&用户登录&发布新闻_云彩123的博客-CSDN博客前提操作:注意:导入jar包、打开数据库服务和监听、建文件等操作请回顾上一篇文章javaweb之页面跳转方式&JDBC交互_云彩123的博客-CSDN博客一、页面跳转方式表单提交的两种方式以及区别?get:数据会显示在地址栏上,数据量小,安全性低post:相反。request可以接收哪两种方式的值? ①通过form表单 ②通过超链接传值 <a href = "a.https://blog.csdn.net/m0_64522859/article/details/124019792


一、session-内置对象

目录

一、session-内置对象

1.概述

2.快速入门

    3.细节

4.session的特点

5、session与Cookie的区别

6、session常用方法:

二、Cookie

    1、 概述

  2、快速入门    使用步骤:

3、cookie的使用方式:

4.Cookie的细节

5、cookie的常用方法:

6、注意事项:

三、session和cookie的使用

1.会话

​2.session内置对象

3.cookie


1.概述


    服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象。jsp:session  servlet:HttpSession
    

2.快速入门


    (1)getAttribute(String name);
    (2)setAttribute(String name,Object value)
    (3)removeAattribute(String name)

    
3.细节


    (1)当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
        * 默认情况下,不是
        * 如果需要相同,则可以创建cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
            Cookie c = new Cookie("JSESSIONID",session.getId());
            c.setMaxAge(60*60);
            response.addCookie(c);
            
   (2)客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
        * 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作。
            ** session的钝化:
                在服务器正常关闭之前,将session对象序列化到硬盘上
            ** session的活化:
                在服务器启动后,将session文件转化为内存中的session对象即可。
            
  (3)3session什么时候被销毁?
        (1) 服务器关闭
        (2) session对象调用invalidate()方法
        (3)session默认失效时间 30分钟=》web.xml
        

4.session的特点


  (1)session用于存储一次会话的多次请求的数据,存在服务器端
   (2)session可以存储任意类型,任意大小的数据
    

5、session与Cookie的区别


(1)ession存储数据在服务端,Cookie在客户端
(2)session没有数据大小限制,Cookie有
(3)session数据安全,Cookie相对于不安全

6、session常用方法:

(1)public void setAttribute(String name,String value);
    设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。

(2)public Object getAttribute(String name);
    在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。  

(3)public void removeAttribute(String name);
    删除指定名字的session属性,若该属性不存在,则出现异常。

(4)public void invalidate();
    使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。  

(5)public String getId( );
    获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。

(6)public void setMaxInactiveInterval(int interval);
    设置会话的最大持续时间,单位是秒,负数表明会话永不失效。  

(7)public int getMaxInActiveInterval();
    获取会话的最大持续时间,使用时候需要一些处理 


二、Cookie

    1、 概述


    客户端会话技术,将数据保存到客户端

  2、快速入门
    使用步骤:


        (1)创建Cookie对象,绑定数据
            new Cookie(key,value);
        (2)发送Cookie对象(从服务端---》客户端)
            request.addCookie(cookie)
        (3)获取Cookie,获取数据
            request.getCookies()

3、cookie的使用方式:

(1)创建Cookie对象,绑定数据(在服务器端获取指定数据通过cookie保存)
    ** Cookie cookie = new Cookie(key,value);

(2)发送Cookie对象(从服务端---》客户端)
    ** response.addCookie(cookie)

(3)获取Cookie,获取数据
    ** Cookie [] cookies = request.getCookies()

4.Cookie的细节

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

    (2) cookie在浏览器中保存多长时间?
    ①默认情况下,当浏览器关闭后,Cookie数据被销毁
    ②持久化存储
        ** setMaxAge(int seconds);秒
        ** 参数:
            正数---》将Cookie数据写到硬盘的文件中。持久化存储【cookie的存活时间】
        ** 负数:
            默认值
        ** 零:
            删除cookie信息
    
(3)cookie能不能存储中文?
        ** 在tomcat8.0之前 cookie中不能直接存储中文数据。
            ** 需要将中文数据转码---》一般采用URL编码
        
        ** 在tomcat8.0之后 ,cookie支持中文数据,特殊字符还是不支持,建议使用URL编码存储
            使用URL解码解析
            * 编码 URLEncoder.encode("字符串","utf-8");
            * 解码 URLDecoder.decode("字符串","utf-8");

5、cookie的常用方法:

(1)void setMaxAge(int e);
    ** 设置Cookie有效期,单位秒,正数为多少秒后失效;负数表示当浏览器关闭时,Cookie将会被删除(争议);零表示清空Cookie

(2)int getMaxAge();
    ** 获取Cookie有的效时间,单位秒

(3)void setValue(String value);
    ** 在Cookie创建后,对Cookie进行赋值

(4)String    getValue();
    ** 获取Cookie的值

(5)String    getName();
    ** 获取Cookie的名称

(6) Cookie[]    getCookies();
    ** 获取Cookie中所有的属性名

6、注意事项:

(1)编码 URLEncoder.encode("字符串","utf-8");

(2)解码 URLDecoder.decode("字符串","utf-8");


三、session和cookie的使用

1.会话


    版本1:当前浏览器与服务器间多次的请求、响应关系,被称作一个会话
    版本2:打开浏览器,进行网页的浏览,到关闭浏览器的过程,这个过程称为一次会话


2.session内置对象

    2.1 session内置对象简介
    (1)session表示客户端与服务器的一次会话
    (2)Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,
             也就是用户浏览网站所花费的时间。
    (3)从上述定义中可以看到,session实际是一个【特定的时间概念】
    (4)服务器的内存中,保存着同用户的session。

    2.2 内置对象session的常用方法
    (1)void setAttribute(String key,Object value):以key/value的形式保存对象值
    (2)Object getAttribute(String key):通过key获取对象值
    (3)void invalidate():设置session对象失效
    (4)String getId():获取sessionid
    (5)void setMaxInactiveInterval(int interval):设定session的非活动时间
    (6)int getMaxInactiveInterval():获取session的有效非活动时间(以秒为单位)
    (7)void removeAttribute(String key):从session中删除指定名称(key)所对应的对象

    2.3 session与窗口的关系
    (1)每个session对象都与浏览器一一对应,重新开启一个浏览器,相当于重新创建一个session对象。
    (2)通过超链接打开的新窗口,新窗口的session与其父窗口的session相同 

3.cookie


    3.1 概述:cookie是Web服务器保存在客户端的一系列文本信息

    3.2 cookie的作用:
    对特定对象的追踪
    统计网页浏览次数
    简化登录

    3.3 安全性能:容易信息泄露

    3.4 语法:
    ①创建cookie对象
    Cookie newCookie = new Cookie(String key,String value);
    ②写入cookie
    response.addCookie(newCookie);
    ③读取cookie
      Cookie[] cookies = request.getCookies();

    3.5 常用方法:
    void setMaxAge(int expiry):设置cookie的有效期,以秒为单位
    void setValue(String value):在cookie创建后,对cookie进行赋值
    String getName():获取cookie的名称
    String getValue():获取cookie的值

    3.6 编码问题
    //创建Cookie时
      Cookie cookie = new Cookie(name, URLEncoder.encode(value, "UTF-8"));
      //读取Cookie时    
      String value = URLDecoder.decode(cookie.getValue(), "UTF-8");

    3.7 session与cookie的比较
    session是在服务器端保存用户信息,Cookie是在客户端保存用户信息

    session中保存的是对象,Cookie保存的是字符串

    session随会话结束而关闭,Cookie可以长期保存在客户端

    不重要的信息使用cookie保存,重要的信息使用session保存

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值