java web Cookie處理

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;。 …