首页 > 编程语言 >狂神说Java Web学习笔记_Cookie

狂神说Java Web学习笔记_Cookie

时间:2024-04-11 22:44:20浏览次数:20  
标签:Web cookies Java resp Cookie import servlet javax

会话

用户打开一个浏览器,点击了很多链接,访问了很多web资源,关闭浏览器之后,这个过程可以称之为一次会话。

有状态会话

一个同学来过教室,大家看到了,下次再来教室的时候,我们会知道这个同学曾经来过,这个被称为有状态会话。

一个网站如何证明你访问过

服务端给客户端一个信件,客户端下次访问服务端的时候带上信件—cookie

服务端登记你来过,下次你再来的时候服务端来匹配你—session

保存会话的两种技术

客户端技术(响应,请求)

Session

服务端技术,利用这个技术,可以保存用户的会话信息。我们可以把信息或者数据放在session中。

常见应用场景

你登录网站之后,关闭浏览器之后,下次再访问网站的时候不需要再重新填写信息登录了,直接就登录进去了。

Cookie

  • 从请求中拿到Cookie信息
  • 服务器响应给客户端Cookie

保存上一次访问浏览器时间

package com.dawn.cookie;

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 CookieDemo01 extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      req.setCharacterEncoding("utf-8");
      resp.setCharacterEncoding("utf-8");
      resp.setContentType("text/html;charset=utf-8");

      PrintWriter out = resp.getWriter();
      Cookie[] cookies = req.getCookies();
      if (cookies != null) {
          boolean hasLastLoginTime = false;
          for (int i = 0; i < cookies.length; i++) {
              if (cookies[i].getName().equals("lastLoginTime")) {
                  long l = Long.parseLong(cookies[i].getValue());
                  Date date = new Date(l);
                  String lastLoginTime = date.toLocaleString();
                  out.print("上一次的登录时间为:" + lastLoginTime);
                  hasLastLoginTime = true;
                  break;
              }
          }
          if (!hasLastLoginTime) {
              out.print("这是你第一次登录~");
          }
      } else {
          out.print("这是你第一次登录~");
      }
      resp.addCookie(new Cookie("lastLoginTime", System.currentTimeMillis() + ""));
  }
}
<servlet>
    <servlet-name>cookieDemo01</servlet-name>
    <servlet-class>com.dawn.cookie.CookieDemo01</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>cookieDemo01</servlet-name>
    <url-pattern>/cookieDemo01</url-pattern>
</servlet-mapping>
<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
    </dependency>
</dependencies>


uploading-image-57331.png

标签:Web,cookies,Java,resp,Cookie,import,servlet,javax
From: https://www.cnblogs.com/growingbambi/p/18130193

相关文章

  • Java基础学习 | 2024年4月11日
    变量1.类变量(静态变量):前面用static修饰,表示所有子类都共用同一个属性值,可以直接用类名来访问静态变量,也可以通过实例名来访问静态变量。即无论创建多少个类实例,静态变量在内存中只有一份拷贝,被所有实例共享。举例:点击查看代码publicclassMyClass{publicstaticintc......
  • JavaScript 迈入 AI 新纪元
    随着人工智能技术的不断进步,JavaScript也迎来了自己的AI时代。JS-Torch是一个全新的深度学习库,专为JavaScript设计,其语法习惯与广受欢迎的PyTorch框架高度相似。这个库提供了一整套深度学习工具,包括可追踪梯度的张量对象、多层网络结构以及自动微分功能。PyTorch,作为JS......
  • java中字符串替换的4种方法 replaceAll() 带正则表达式参数 str.replaceAll("[0-9]+
    java中字符串替换的4种方法replaceAll()带正则表达式参数str.replaceAll("[0-9]+","");目录前言一、String的replace()方法二、String的replaceAll()方法三、StringBuffer/StringBuilder的replace()方法四、Matcher的replaceAll()方法总结前言在日常开发中,我们对......
  • Java创建数组、赋值的四种方式,声明+创建+初始化 详解
    Java创建数组、赋值的四种方式,声明+创建+初始化详解@目录一、创建数组的四种方式二、详解三、数组存储的弊端一、创建数组的四种方式以int数据类型为例@TestpublicvoidtestNewArray(){//创建数组//法一int[]arr1=newint[]{1,2,3,4,5};System.ou......
  • Java中Array.sort()的几种用法简明教程 (需要初始化要排序的对象)对 一个数组的所有元素
    Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)对一个数组的所有元素进行排序,并且是按从小到大的顺序Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)======================================================1、Arrays.sort(int[]a)......
  • java中工具类检测ip和端口能否正常连接
    话不多说,直接上干货...publicclassNetUtils{privatestaticfinalLoggerlog=LoggerFactory.getLogger(NetUtils.class);/***特别注意:ping不通,并不代表telnet或者socket就不能正常连接*原因:协议不同*-ping是基于ICMP协议,ping......
  • UJCMS 9.1.0 发布,国内开源 java cms
    许可协议从GPL-2改为Apache-2.0,更宽松的协议,方便用户将系统集成到自身的应用中。修复了已知bug,系统更加稳定。升级日志(9.1.0)修复前台全文搜索没有结果web.xmlsession过期时间从30分钟改成25分钟,部分漏洞扫描软件会将session过期时间大于等于30分钟判定为漏洞修复文章管理一......
  • Java开头(开发环境配置及IDE的安装)
    Java安装开发环境卸载JDK删除Java的安装目录删除环境变量JAVA_HOME删除path下关于Java的目录检验(cmd中),输入java-version安装JDKOralce官网下载并安装记住安装的路径配置环境变量(系统变量中新建变量JAVA_HOME,并设定变量值为java文件的根目录)配置path变量(添加%JAVA_......
  • java面向对象有哪些特征
    Java面向对象编程(OOP)的核心特征通常包括封装性、继承性、多态性和抽象性。具体如下:封装性:封装是指将对象的属性(数据)和行为(方法)绑定在一起,并对对象的实现细节进行隐藏,只暴露出必要的接口给外部使用。这样做的目的是为了保护对象的内部状态,防止外部随意访问和修改。继承性:继承允......
  • JAVA语言学习-Day8
    参考教学视频:秦疆GUI组件:窗口、弹框、面板、文本框、列表框、按钮、图片、监听事件、鼠标、键盘事件、破解工具1.简介Gui的核心:SwingAWT界面不美观需要jre环境2.AWTawt介绍:包含了很多的接口和类元素:窗口、按钮、文本框java.awt.*组件Componentbu......