首页 > 其他分享 >Cookie相关

Cookie相关

时间:2024-05-07 16:57:06浏览次数:19  
标签:cookie resp Cookie import 相关 servlet javax

  1. cookie的概念

    cookie是一种客户端会话技术将数据保存到客户端。

  2. cookie的利弊:

    1)将数据保存到客户端,十分方便,同时减轻服务器存储压力
    2)对保存数据的个数(20)及大小有限制(4kb)

  3. 作用

    cookie用来保存少量及不太敏感的数据
    可以在不登入的情况下,对客户端完成身份识别(即在客户端设置一个set-cookie的键值对,在访问的时候使用键值对来获取客户端的身份)

  4. 使用Cookie

    1)创建cookie对象
    2)发送cookie对象
    3)获取cookie对象

    由ServletDemo01设置cookie,ServletDemo02获取cookie

      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.Cookie;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      @WebServlet("/demo01")
      public class ServletDemo01 extends HttpServlet {
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //创建cookie
              Cookie cookie = new Cookie("name", "zhangsan");
              resp.addCookie(cookie);
          }
    
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              this.doPost(req, resp);
          }
      }
    
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.Cookie;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      @WebServlet("/demo02")
      public class ServletDemo02 extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //获取cookie
           Cookie[] cookies = req.getCookies();
           if (cookies!=null){
               for (Cookie cookie : cookies) {
                   //获取cookie值与名称
                   String value = cookie.getValue();
                   String name = cookie.getName();
                   System.out.println(name+":"+value);
               }
           }
          }
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              this.doGet(req, resp);
          }
      }
    
    
  5. 其他问题

    如何实现发送多个Cookie:

      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //创建cookie
              //创建第一个cookie
              Cookie cookie = new Cookie("name1", "zhangsan");
              //发送第一个cookie
              resp.addCookie(cookie);
              //创建第二个cookie
              Cookie id = new Cookie("name2", "lisi");
             //发送第二个cookie
              resp.addCookie(id);
          }
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              this.doPost(req, resp);
          }
    

    Cookie在浏览器中的保存多长时间:

    默认情况下浏览器关闭后,Cookie数据被销毁
    可以调用setmaxage(int seconds)方法来设置Cookie的存储时间

    • second为正数,将Cookie持久化写入硬盘,并且指定存储的时间,时间到了cookie自动失效
    • second为零,删除cookie
    • second小于零,默认值,即浏览器关闭后删除cookie

    Cookie中如何保存中文:

    在tomcat 8 之前 cookie中不能直接存储中文数据。
    需要将中文数据转码--一般采用URL编码
    在tomcat 8 之后,cookie支持中文数据。
    特殊字符还是不支持,建议使用URL编码存储,URL解码解析

     //URL编码
     name= URLEncoder.encode(name,"utf-8");
     Cookie cookie = new Cookie("name", name);
     resp.addCookie(cookie);
     //解码
     System.out.println(name+":"+ URLDecoder.decode(value,"utf-8"));
    

标签:cookie,resp,Cookie,import,相关,servlet,javax
From: https://www.cnblogs.com/hytip/p/18177752

相关文章

  • Servlet相关知识(2)
    HttpServletResponse类HttpServletResponse类和HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用,HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以......
  • Servlet相关知识
    什么是servlet?JavaServlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。......
  • 路由跳转、相关api、路由守卫、路由两种工作模式
    【router基本使用(路由跳转,携带数据)】#######跳转#######-js跳转this.$router.push(路径)this.$router.push(对象)-this.$router.push({name:'路由别名'})-this.$router.push({path:'路径'})-组件跳转......
  • maven相关
    maven:apache组织提供的一个顶级项目,由Java开发作用:管理项目构建生命周期管理项目中jar(核心功能)。自动帮程序员甄别和下载第三方库(jar)管理项目基础信息(文档管理、测试报告)配置环境变量:为了在任何路径下都可以使用Maven命令,所以需要配置JAVA_HOME:安装jdk时已......
  • Java Web 相关
    页面静态页面:即静态网页,是实际存在的,无需经过服务器的编译,直接加载到客户浏览器上显示出来。静态页面需要占一定的服务器空间,且不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外)。常见的静态页面举例:.html扩......
  • Spring bean 相关
    beanId:bean的唯一标识beanName:applicationContext.getBean("userService")参数传递的其实是beanName。如果设置<bean>时没有设置beanName,会将beanId转化为beanName,没有beanId会将全类名设置为beanName,即com.xx.xx.UserServiceImplbean也可以设置多个别名bean设置作用范......
  • H.264学习笔记——相关概念
    基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺序......
  • JDBC相关
    什么是JDBC,为什么要使用JDBC?在web开发中,不可避免的地要使用数据库来存储和管理数据。为了在java语言中提供数据库访问的支持,Sun公司于1996年提供了一套访问数据的标准Java类库,即JDBC。JDBC,全称是JavaDatabaseConnectivity,它是一套统一的、基于Java语言的关系数据库编程接口......
  • 深度学习相关理论
    一、深度学习相关理论1.神经网络概述     2.卷积神经网络CNN ①卷积层——计算方法是大矩阵内部×小矩阵=较小矩阵,作用是特征提取  ②池化层——计算方法是大矩阵通过选取最大值或是平均值变成小矩阵,作用是降维、提高计算效率    3.激活函......
  • BGP 相关术语
    BGP相关术语协议相关BGP:边界网关协议(BorderGatewayProtocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(NetworkLayerReachabilityInformation,NLRI)的路由选择协议;NLRI:NetworkLayerReachabilityInformation,网络层可达性信息;由于BGP传递的信息已经不限于路......