java web 设置cookie
cookie

更改启动端口
更改端口号

// Directory tree (5 levels)
├── src\
│   ├── a.txt
│   └── com\
│       └── zhang\
│           └── ServletContext\
│               ├── cookie\
│               └── servletContext.java
└── web\├── WEB-INF\│   ├── c.txt│   └── javax.servlet.jar├── b.txt├── index.jsp└── login.html

项目基本信息

  • 项目类型 :Java Web应用
    技术栈分析
  • 后端 :Java Servlet
  • 前端 :JSP、HTML
  • 构建工具 :可能使用IntelliJ IDEA自带构建系统
  • 包含用户登录页面(login.html)
  • 可能实现ServletContext相关功能
  • 包含Cookie处理模块(src/com/zhang/ServletContext/cookie目录)

访问
http://localhost:8081/cookieDome1
http://localhost:8081/cookieDome2
http://localhost:8081/cookieTest
http://localhost:8081/cookieTest2
http://localhost:8081/servletContext

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("/cookieDome1")
public class CookieDome1 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//    1. 创建Cookie对象,绑定数据Cookie cookie = new Cookie("msg", "hello");cookie.setMaxAge(300);Cookie cookie1 = new Cookie("masg", "123");Cookie cookie2 = new Cookie("mmm", "张三");cookie2.getPath();cookie.setDomain("day21");//		2. 发送Cookie对象response.addCookie(cookie);response.addCookie(cookie1);response.addCookie(cookie2);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}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("/cookieDome2")
public class CookieDome2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//            3. 获取Cookie,拿到数据Cookie[] cookies = request.getCookies();
if(null!=cookies){for (Cookie cookie : cookies) {String name = cookie.getName();String value = cookie.getValue();System.out.println(name + ":" + value);}}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}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;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置相应消息头的格式和编码方式response.setContentType("text/html;charset=utf-8");//1、获取所有的cookieCookie[] cookies = request.getCookies();boolean flag = false;//false代表第一次访问if (cookies != null || cookies.length > 0) {//2、遍历cookiefor (Cookie cookie : cookies) {//3、获取cookie的名字String name = cookie.getName();//4、判断是否存在名为:lastTime的cookieif (name.equals("lastTime")) {//有该Cookie,不是第一次访问flag = true;//true不是一次访问//响应数据//获取Cookie的value,时间String value = cookie.getValue();//解码System.out.println("解码前是:" + value);value = URLDecoder.decode(value, "utf-8");System.out.println("解码后是:" + value);//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);//URL编码System.out.println("编码前是:" + str_date);str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("编码后是:" + str_date);//设置cookie值 timecookie.setValue(str_date);//设置cookie的存活时间   --- 1个月cookie.setMaxAge(60 * 60 * 24 * 30);//把cookie写回浏览器保存response.addCookie(cookie);response.getWriter().write("<h1>欢迎回来,您上次访问的时间是:" + value + "</h1>");break;}}}if (cookies == null || cookies.length == 0 || flag == false) {//没有名为lastTime的cookie,是第一次访问//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);//URL编码System.out.println("编码前是:" + str_date);str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("编码后是:" + str_date);//新建cookieCookie cookie = new Cookie("lastTime", str_date);//设置cookie的存活时间   --- 1个月cookie.setMaxAge(60 * 60 * 24 * 30);//把cookie写回浏览器保存response.addCookie(cookie);//响应数据response.getWriter().write("<h1>您好,欢迎您首次访问!</h1>");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);
}
}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;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;@WebServlet("/cookieTest2")
public class CookieTest2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置相应消息头的格式和编码方式response.setContentType("text/html;charset=utf-8");//1、获取所有的cookieCookie[] cookies = request.getCookies();boolean flag = false;//false代表第一次访问if (cookies != null || cookies.length > 0) {//2、遍历cookiefor (Cookie cookie : cookies) {//3、获取cookie的名字String name = cookie.getName();//4、判断是否存在名为:lastTime的cookieif (name.equals("lastTime")) {//有该Cookie,不是第一次访问flag = true;//true不是一次访问//响应数据//获取Cookie的value,时间String value = cookie.getValue();//解码System.out.println("解码前是:" + value);value = URLDecoder.decode(value, "utf-8");System.out.println("解码后是:" + value);//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);//URL编码System.out.println("编码前是:" + str_date);str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("编码后是:" + str_date);//设置cookie值 timecookie.setValue(str_date);//设置cookie的存活时间   --- 1个月cookie.setMaxAge(60 * 60 * 24 * 30);//把cookie写回浏览器保存response.addCookie(cookie);response.getWriter().write("<h1>欢迎回来,您上次访问的时间是:" + value + "</h1>");break;}}}if (cookies == null || cookies.length == 0 || flag == false) {//没有名为lastTime的cookie,是第一次访问//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);//URL编码System.out.println("编码前是:" + str_date);str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("编码后是:" + str_date);//新建cookieCookie cookie = new Cookie("lastTime", str_date);//设置cookie的存活时间   --- 1个月cookie.setMaxAge(60 * 60 * 24 * 30);//把cookie写回浏览器保存response.addCookie(cookie);//响应数据response.getWriter().write("<h1>您好,欢迎您首次访问!</h1>");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/servletContext")
public class servletContext extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//this.ServletContext();ServletContext context = this.getServletContext();String b = context.getRealPath("/b.txt");//web目录下资源访问System.out.println(b);String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问System.out.println(c);String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问System.out.println(a);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

前端

<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %><%--Created by IntelliJ IDEA.User: 86133Date: 2020/10/25Time: 10:15To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>cookie案例改写</title>
</head>
<body>
<%Cookie[] cookies = request.getCookies();boolean flag = false;//false代表第一次访问if (cookies != null || cookies.length > 0) {//2、遍历cookiefor (Cookie cookie : cookies) {//3、获取cookie的名字String name = cookie.getName();//4、判断是否存在名为:lastTime的cookieif (name.equals("lastTime")) {//有该Cookie,不是第一次访问flag = true;//true不是一次访问//响应数据//获取Cookie的value,时间String value = cookie.getValue();//解码System.out.println("解码前是:" + value);value = URLDecoder.decode(value, "utf-8");System.out.println("解码后是:" + value);//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);//URL编码System.out.println("编码前是:" + str_date);str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("编码后是:" + str_date);//设置cookie值 timecookie.setValue(str_date);//设置cookie的存活时间   --- 1个月cookie.setMaxAge(60 * 60 * 24 * 30);//把cookie写回浏览器保存response.addCookie(cookie);%>
<h1>欢迎回来,您上次访问的时间是:<%=value%>
</h1>
<%break;}}}if (cookies == null || cookies.length == 0 || flag == false) {//没有名为lastTime的cookie,是第一次访问//获取当前时间的字符串,重新设置Cookie的值,重新发送cookieDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);//URL编码System.out.println("编码前是:" + str_date);str_date = URLEncoder.encode(str_date, "utf-8");System.out.println("编码后是:" + str_date);//新建cookieCookie cookie = new Cookie("lastTime", str_date);//设置cookie的存活时间   --- 1个月cookie.setMaxAge(60 * 60 * 24 * 30);//把cookie写回浏览器保存response.addCookie(cookie);//响应数据
%>
<h1>您好,欢迎您首次访问!</h1>
<%}
%></body>
</html><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/servletContext" method="post"><button type="submit">访问</button>
</form></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917092.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917092.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917092.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习—线性回归

一线性回归线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。相关关系&#xff1a;包含因果关系和平行关系因果关系&#xff1a;回归分析【原因引起结果&#xff0c;需要明确自变量和因变量】平行关系&#xff1…

Spring Boot Admin 监控模块笔记-实现全链路追踪

一、概述Spring Boot Admin&#xff08;SBA&#xff09;是一个用于监控和管理 Spring Boot 应用程序的工具。它提供了一个 Web 界面&#xff0c;可以集中管理多个 Spring Boot 应用程序的健康状态、指标、日志、配置等信息。通过 SBA&#xff0c;你可以轻松地监控和管理你的微服…

容器化与Docker核心原理

目录 专栏介绍 作者与平台 您将学到什么&#xff1f; 学习特色 容器化与Docker核心原理 引言&#xff1a;为什么容器化成为云计算时代的基石&#xff1f; 容器化技术全景与Docker核心原理&#xff1a;从概念到实践 文章摘要 1. 引言&#xff1a;为什么容器化成为云计算…

掌握Python三大语句:顺序、条件与循环

PS不好意思各位&#xff0c;由于最近笔者在参加全国大学生电子设计大赛&#xff0c;所以最近会出现停更的情况&#xff0c;望大家谅解&#xff0c;比赛结束后我会加大力度&#xff0c;火速讲Python的知识给大家写完&#x1f396;️&#x1f396;️&#x1f396;️&#x1f396;…

JAVA结合AI

Java 与人工智能&#xff08;AI&#xff09;的结合正经历从技术探索到深度融合的关键阶段。以下从技术生态、应用场景、工具创新、行业实践及未来趋势五个维度展开分析&#xff0c;结合最新技术动态与企业级案例&#xff0c;揭示 Java 在 AI 时代的独特价值与发展路径。一、技术…

本土DevOps平台Gitee如何重塑中国研发团队的工作流

本土DevOps平台Gitee如何重塑中国研发团队的工作流 在数字化转型浪潮席卷各行各业的当下&#xff0c;软件开发效率已成为企业竞争力的核心指标。Gitee DevOps作为专为中国开发团队打造的本土化研发管理平台&#xff0c;正在改变国内技术团队的工作方式。该平台通过从代码管理到…

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

一、MBS技术背景与核心价值 1.1 业务需求驱动 随着超高清视频(4K/8K)、多视角直播、XR元宇宙应用爆发式增长,传统单播传输面临带宽浪费(相同内容重复发送)与拥塞风险(万人并发场景)的双重挑战。5G MBS通过点对多点(PTM)传输实现内容一次发送、多终端接收,频谱效率提…

如何将照片从 realme 手机传输到电脑?

对于 realme 用户来说&#xff0c;将照片传输到电脑可以有多种用途&#xff0c;从释放设备空间到在单独的存储设备上创建备份。这个过程不仅有助于高效管理设备内存&#xff0c;还可以让您利用电脑上强大的照片编辑软件进行高级增强和创意项目。了解如何将照片从 realme 手机传…

Centos 7部署.NET 8网站项目

简介 本文详细介绍了在CentOS 7系统上部署.NET 8网站项目的完整流程&#xff0c;主要内容包括&#xff1a;系统版本更新与检查、PostgreSQL数据库的安装配置&#xff08;含防火墙设置、数据库初始化及远程访问配置&#xff09;、Nginx Web服务的安装与防火墙配置。文章通过分步…

Windows 11下IDEA中使用git突然变得卡慢及解决办法

1. 表象 使用idea的git进行update、commit、push等操作时&#xff0c;极度卡慢。需等待几十秒到几分钟。修改文件后&#xff0c;git刷新也不及时。update命令有时候无法点击。 2.解决方法 停止PC Manager ServiceCtrl shift esc : 打开任务管理器找到服务&#xff1a; 服务中…

MyBatis 的两级缓存机制

现实分布式项目中会不会开启mybatis的二级缓存&#xff1f; 在分布式项目中&#xff0c;是否开启MyBatis的二级缓存需结合具体场景和技术方案综合评估。 以下是关键考量因素&#xff1a; 一、默认二级缓存的局限性 隔离性问题&#xff1a;MyBatis默认的二级缓存基于HashMap实…

分布式原子序列(Distributed Atomic Sequence)

这段内容是关于 Apache Ignite 中的 分布式原子序列&#xff08;Distributed Atomic Sequence&#xff09;&#xff0c;也就是一个分布式 ID 生成器。我们来一步步深入理解它的原理、用途和使用方式。&#x1f539; 一、核心概念&#xff1a;什么是分布式 ID 生成器&#xff1f…

VSCode——插件分享:Markdown PDF

该插件可以将markdown编写内容转成PDF。 ✅ 支持渲染图表、代码高亮、表格等 Markdown 内容 安装 Visual Studio Code安装插件&#xff1a;Markdown PDF 打开扩展商店&#xff0c;搜索 Markdown PDF 并安装 打开你的 .md 文件右键 → 点击 Markdown PDF: Export (pdf)自动生成 …

rust-模块树中引用项的路径

模块树中引用项的路径 为了告诉 Rust 在模块树中如何找到某个项&#xff0c;我们使用路径&#xff0c;就像在文件系统中导航时使用路径一样。要调用一个函数&#xff0c;我们需要知道它的路径。 路径有两种形式&#xff1a; 绝对路径是从 crate 根开始的完整路径&#xff1b…

mac n切换node版本报错Bad CPU type in executable

该node版本仅支持intel芯片&#xff0c;不支持Apple 芯片&#xff08;M1/M2/M3/M4&#xff09;&#xff0c;所以需要下载Rosetta 2 &#xff0c;让node可以在搭载 Apple 芯片的 Mac 上运行。 env: node: Bad CPU type in executable /opt/homebrew/bin/n: line 753: /usr/local…

经典算法之美:冒泡排序的优雅实现

经典算法之美&#xff1a;冒泡排序的优雅实现基本概念工作原理介绍具体实现代码实现总结基本概念 冒泡排序是一种简单的排序算法&#xff0c;通过重复比较相邻的元素并交换它们的位置来实现排序。它的名称来源于较小的元素像气泡一样逐渐“浮”到数组的顶端。 工作原理 介绍…

click和touch事件触发顺序 糊里糊涂解决的奇怪bug

问题详情 在嵌入式硬件设备里&#xff0c;测试 “点击input密码框&#xff0c;弹出第三方自带键盘&#xff0c;点击密码框旁的小眼睛&#xff0c;切换输入内容加密状态&#xff0c;键盘收起/弹出状态不变” 的功能逻辑&#xff1b;实际情况却是 “点击键盘或input框之外的任何地…

【0基础PS】Photoshop (PS) 理论知识

目录前言一、Photoshop 核心概念与定位​二、图像基础理论​三、图层理论&#xff1a;PS 的核心工作机制​四、选区与蒙版​五、调色核心理论​六、常用文件格式​学习建议​总结前言 在数字图像编辑领域&#xff0c;Photoshop&#xff08;简称 PS&#xff09;无疑是行业标杆级…

数据库 设计 pdm comment列表显示和生成建表sql

按如下步骤 生成见建表语句 comment非空使用comment 生成字段注释&#xff0c; 空的时候使用name 生成字段注释 sql脚本模板编辑 参考 PowerDesigner生成mysql字段comment 注释-腾讯云开发者社区-腾讯云 版本不同这边的设置不同 这个勾打上

嵌入式基础知识复习(C语言)

知识扩展7.28 嵌入式产品特点、开发环境、计算机组成、Linux终端初识1、嵌入式产品。特点&#xff1a;低功耗、根据用户需求定制。硬件&#xff1a;arm处理器。软件&#xff1a;Linux操作系统arm架构&#xff1a;精简指令集、低功耗&#xff08;移动/嵌入式&#xff09;。 …