cookie

2023-11-08

 

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

//保存用户上一次访问的时间
public class CookiesDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //服务器,告诉你。你来的时间,把这个时间封装成一个信件,你下次带来,我就知道你来了
        //解决中文乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
      resp.setHeader("Content-type","text/html;charset=utf-8");
        //获得浏览器输出对象
        PrintWriter out = resp.getWriter();

        //Cookie,服务器端从客户端获取:客户端发送的请求中,可能会有上一次访问留下的Cookie
        Cookie[] cookies = req.getCookies();

        //判断Cookie是否存在
        if (cookies!=null){
            out.write("您上一次访问的时间是:");
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies[i];
                //获取Cookie的名字
                if (cookie.getName().equals("lastLoginTime")){
                    //获取Cookie的信息
                    //将获得的系统当前日期,转化为时间戳
                    long lastLoginTime = Long.parseLong(cookie.getValue());
                    //通过Date类的构造器将时间戳,转化为具体时间
                    Date date = new Date(lastLoginTime);
                    //然后将Date具体对象,解析为字符串,并发送至服务器网页上
                    out.write(date.toLocaleString());
                }

            }

        }else {
            out.write("这是您第一次访问本站!");
        }

        //服务器给客户端响应一个Cookie
        //其实Cookie就是一个键值对,
        Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
       //给cooki设置一个期限
         cookie.setMaxAge(60);
           resp.addCookie(cookie);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

//保存用户上一次访问的时间
public class CookiesDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //服务器给客户端响应一个Cookie
        //其实Cookie就是一个键值对,
        Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
       //给cooki设置一个期限
         cookie.setMaxAge(0);
           resp.addCookie(cookie);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

转码解码问题 

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Date;

//保存用户上一次访问的时间
public class CookiesDemo03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //服务器,告诉你。你来的时间,把这个时间封装成一个信件,你下次带来,我就知道你来了
        //解决中文乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
      resp.setHeader("Content-type","text/html;charset=utf-8");
        //获得浏览器输出对象
        PrintWriter out = resp.getWriter();

        //Cookie,服务器端从客户端请求中获取:客户端发送的请求中,可能会有上一次访问留下的Cookie
        Cookie[] cookies = req.getCookies();

        //判断Cookie是否存在
        if (cookies!=null){
            out.write("您上一次访问的时间是:");
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies[i];
                //获取Cookie的名字
                if (cookie.getName().equals("name")){
                    String value = cookie.getValue();
                    out.write(URLDecoder.decode(value,"utf-8"));
                }

            }

        }else {
            out.write("这是您第一次访问本站!");
        }

        //服务器给客户端响应一个Cookie
        //其实Cookie就是一个键值对,
        Cookie cookie = new Cookie("name", URLEncoder.encode("基基","utf-8"));

           resp.addCookie(cookie);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cookie 的相关文章

随机推荐

  • HDLbits Popcount3的一点疑问

    题目 A population count circuit counts the number of 1 s in an input vector Build a population count circuit for a 3 bit i
  • FFmpeg从RTSP获取流时:h264、h265 判断 I 帧的方法

    H264中 I 帧的判断 这是用ffmpeg接口 av read frame 从IPC摄像头获取得到每一帧数据的前几十个字节 一般00 00 00 01分割之后的下一个字节就是NALU类型 NALU类型是可以用来判断帧的类型是I帧 还是P帧
  • Flask-SQLAlchemy(一) 一对一关系

    前言 课程中经常需要进行web开发 往往是采用Flask框架 建立数据库时就避免不了Flask SQLAlchemy的使用 此文章将记录创建关系表的过程 方便日后回顾以及大家交流讨论 一对一关系 下面的一对一关系以用户和身份证为例 首先创建
  • c++ 友元的三种形式和声明方式

    1 成员函数做友元 include
  • HDU 1716 排列2

    测试数据都能过但是WA 求帮看哪里出了问题 题目链接 Hdu 1716 使用STL的next permutation 函数求解 include
  • 消息驱动 微服务器,消息驱动的微服务 - Spring Cloud Alibaba RocketMQ

    引入MQ后的架构演进 MQ的选择 消息队列对比参照表 RocketMQ vs ActiveMQ vs Kafka 参考至 CentOS7上搭建RocketMQ 环境要求 CentOS 7 2 64位JDK1 8 4G 的可用磁盘空间 1 下
  • VIM工具设置步骤

    VIM工具设置步骤入门 引子 找到配置文件 修改配置文件 引子 VIM作为常用的文本编辑器有很多可以设置项 比如我们打开一个文件以后在命令行模式输入set nu来显示行号 但是这个是针对当前打开的这个文件有效 有时候我们想对所有用vim打开
  • Integer. valueOf()的用法

    Integer valueOf 作用 将基本类型int转换为包装类型Integer 或者将String转换成Integer String如果为Null或 都会报错 Integer valueOf 方法实现如下 public static I
  • 用 ASTERISK 搭建自己的免费 VOIP 服务器

    服务器别闲着 博主又要给大家带来新的玩法咯 1 这里以 Debian 为例子 安装 Asterisk apt get update apt get install asterisk 2 预设置 Asterisk 修改 sip conf 和
  • chrome浏览器安装插件方法

    我的浏览器版本 99 0 4844 51 正式版本 64 位 之前收集安装方法 现在做个处理 实际上对于我的不行 但总有一款适合你 首先打开chrome 的设置 gt 更多工具 gt 扩展程序 开启开发者模式 1 直接把 crx文件拖拽到这
  • java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

    2019独角兽企业重金招聘Python工程师标准 gt gt gt ssm框架报错 原因是事务配置在service spring的配置文件对应方法设置位read only true 解决办法 该方法是DML语句的方法 修改该方法的事务传播属
  • 专利申请过程中出现的20种状态,你都知道吗

    转自 https zhuanlan zhihu com p 32940506 专利申请过程中出现的20种状态 你都知道吗 从专利申请到专利驳回或者授权 会出现以下状态 归结起来 有以下一些 1 等待申请费 此状态表示 专利局已经受理该专利
  • java 读写中文文本

    读取中文文本 要设置gbk格式 该格式中文可以识别 英文也可以 reader new InputStreamReader new FileInputStream filename gbk 拓展 分词 分词时候 读取中文文本 TokenStr
  • java 实现常用后端分页

    背景说明 在实际开发中 基于数据库表结构进行SQL查询 如果要对结果进行分页 可以借助一些工具类 如 基于Mybatis的 工具类 PageHelper 但是 有时分页的对象是经过一些业务逻辑处理的列表 如 两个列表取了交集后 或者按照一定
  • 基于鸿蒙js框架实现的wearable五子棋软件

    我基于鸿蒙js框架开发了一个运行于wearable设备的五子棋软件 主要供大家交流学习使用 软件主要由三个page组成 主要逻辑在index中 其余用来显示输赢 鸿蒙os每个page都由一个css 一个js 一个hml组成 hml编程方式与
  • 配置pycharm解释器

    之前学习的时候下载的社区版本的pycharm 配置的解释器是conda3 8 过了好久以为电脑i没有python 所以又下载了python3 9 最近实习社区版本已经不足以满足日常工作 所以就下载了专业版本 但是配置出现了问题我以前的路径识
  • 通过一个无人机代码例程学会ardunio

    第一部分 关于接线 1 首选在接收机的任意一个空置插口引出一个vcc和GND 直接连接arduino 5v 和GND 这时你的arduino就和飞机连成了一套系统 可以共同工作了 2 接下来把接收机供给飞控的四根信号线从飞控上卸下 连接在a
  • Arthas 3.5.0版本发布,支持反编译打印行号和统一鉴权

    Arthas是Alibaba开源的Java诊断工具 深受开发者喜爱 Github https github com alibaba arthas 文档 https arthas aliyun com doc Arthas 最新发布了 3 5
  • Android 读取系统属性详解

    一 背景介绍 Android 系统属性主要有两种 SettingsProvider 和 SystemProperties 二 SettingsProvider详解 2 1 关于Android 设置 里的一些属性可以直接通过settings命
  • cookie

    package com kuang servlet import javax servlet ServletException import javax servlet http Cookie import javax servlet ht