代码模板,Cookie和Session
目录
代码模板
Cookie的基本使用
概念
Cookie的API
public Cookie(String name, String value)
发送Cookie对象到客户端:使用response对象
创建Cookie对象并响应给浏览器
Cookie的使用细节
1.持久化Cookie
Session的基本使用
概念
获取Session对象,使用request对象
存储数据到session域中
根据key,获取值
根据key,删除键值对
Session的原理
代码模板
我们发现重复写一个代码很繁琐,我们可以i设置一个代码模板
写一个组名
在组名中添加
写完代码模板之后,要点击define选择代码类型,正确会变成change
成功
Cookie的基本使用
概念
客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
Cookie是创建服务器端,存在于浏览器端
好处:减轻服务端压力
弊端:不安全,一旦清空浏览器数据,这些Cookie数据就会被清除
Cookie的API
public Cookie(String name, String value)
创建Cookie对象,并设置数据
Cookie cookie=new Cookie("key","value");
发送Cookie对象到客户端:使用response对象
reponse.addCookie(cookie);
创建Cookie对象并响应给浏览器
步骤:
1.创建Cookie对象
//name值是唯一的,如果name值一致,后出现的value会覆盖之前的value2.把Cookie对象发送到浏览器
@WebServlet("/cookieServlet1") public class cookieServlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建Cookie对象//name值是唯一的,如果name值一致,后出现的value会覆盖之前的valueCookie cookie = new Cookie("msg", "赫赫");//把Cookie对象发送到浏览器response.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
查看
在服务器后端获取Cookie对象 Cookie[]cookies=requset.getCookies();
@WebServlet("/cookieServlet2") public class cookieServlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//取出请求中的所有Cookie对象Cookie[] cookies = request.getCookies();//遍历cookiesfor (Cookie cookie : cookies) {//获取cookie对象的nameString name = cookie.getName();//获取cookie的valueString value = cookie.getValue();System.out.println(name+"----"+value);}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
结果:
Cookie的使用细节
1.持久化Cookie
cookie默认是会话级别的,会话结束(关闭浏览器),cookie消失,再次打开浏览器cookie就会不存在 。在开发中会话级别的cookie无法达到长时间共享数据
因此我们要使用持久化Cookie
持久化Cookie就是要使用Cooki类的方法
void setMaxAge(int expiry) 单位是秒
测试
@WebServlet("/cookieServlet3") public class cookieServlet3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建cookieCookie cookie = new Cookie("username", "hh");//设置持久化cookiecookie.setMaxAge(60*60*24);//一天//响应给cookieresponse.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
2.cookie存储特殊字符
1.如果向cookie中存储特殊字符,如果存放就会报错,消息 Cookie值中存在无效字符[32] 描述 服务器遇到一个意外的情况,阻止它完成请求。
2.如果想向cookie中存储特殊字符需要对特殊符号进行编码和解码
存储
@WebServlet("/cookieServlet4") public class cookieServlet4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String value="hh aa";//空格是特殊字符//直接响应给浏览器会报错 消息 Cookie值中存在无效字符[32] 描述 服务器遇到一个意外的情况,阻止它完成请求。//所以设置编码String encode = URLEncoder.encode(value, "utf-8");//创建CookieCookie cookie = new Cookie("msg", encode);response.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
读取
@WebServlet("/cookieServlet5") public class cookieServlet5 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取Cookie对象Cookie[] cookies = request.getCookies();for (Cookie cookie : cookies) {if("msg".equals(cookie.getName())){//取值String value = cookie.getValue();//解码String decode = URLDecoder.decode(value, "utf-8");System.out.println("decode="+decode);//decode=hh aa}}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
Session的基本使用
概念
服务器会话跟踪技术:创建于服务器,将数据存储到服务端
Session是将数据存储到服务端,而Cookie是将数据存储到客户端
存储在客户端的数据容易被窃取
存储在服务端的数据更安全
获取Session对象,使用request对象
HttpSession session=request.getSession();//如果第一次执行就是创建session对象,如果不是第一次执行就是获取session
HttpSession session=request.getSession(boolean create);//如果是true,跟无参一样,如果是false表示如果存在session就获取,如果不存在就不创建session,就返回null;
Session对象提供的功能:Session也是域对象,只要再一次会话过程中多次请求都可以共享seesion中的数据
存储数据到session域中
void setAttribute(String name,object c);
根据key,获取值
Object getAttribute(String name);
根据key,删除键值对
void removeAttribute(String name)
测试
@WebServlet("/sessionServlet1") public class sessionServlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取SessionHttpSession session = request.getSession();//没有seesion就创建,有就获取//存储数据session.setAttribute("msg","session");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
@WebServlet("/sessionServlet2") public class sessionServlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取sessionHttpSession session = request.getSession();//取出数据Object msg = session.getAttribute("msg");System.out.println(msg);//session}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }
Session的原理
tomcat服务器会为每个浏览器(访问的Servlet创建Session)创建一个session容器,那么每个session容器该怎么区分?
tomcat创建session容器之后会为每个seesion容器添加一个唯一的标识,这个标识JSESSIONID 并使用该标识来区分seesion容器
由于tomcat服务器存在多个session容器,那么对于浏览器甲来说,第二次访问tomcat服务器的时候,怎么找到自己的容器?
其实tomcat在第一次为浏览器创建session容器的时候同时会创建一个会话Cookie,将session容器的唯一标识JSESSIONID存放到cookie中,然后将会话级别的cookie存放到浏览器中,当下次访问tomcat服务器时携带cookie,并在tomcat中取出cookie中的JSESESSION的值,进行比对查找找到自己创建的容器,然后再取出存储的数据
相关文章:

代码模板,Cookie和Session
目录 代码模板 Cookie的基本使用 概念 Cookie的API public Cookie(String name, String value) 发送Cookie对象到客户端:使用response对象 创建Cookie对象并响应给浏览器 在服务器后端获取Cookie对象 Cookie[]cookiesrequset.getCookies(); Cookie的使用细…...

Nginx配置及优化
Nginx配置及优化 前言nginx.conf拆分理解上线 最近在配置Nginx的时候,偶尔一些细致的理论有些模糊,配置起来费了点功夫,今天来详细写一下我个人的理解,文章参考了一些官网和其他优秀博主的文章http://t.csdnimg.cn/GbID9。 前言 …...

HashMap在Go与Java的底层实现与区别
在Java中 在Java中hash表的底层数据结构与扩容等已经是面试集合类问题中几乎必问的点了。网上有对源码的解析已经非常详细了我们这里还是说说其底层实现。 基础架构 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable,…...
搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目
使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目 搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目...
【Python】WHEELTEC GPS G60主代码读取传感器数据代码(Windows系统)
【Python】WHEELTEC惯导IMU主代码读取传感器数据代码 Windows系统,直接输入串口号即可 读取设备的移动速度(km/h) 注:该GPS传感器需要在室外条件运行,室内可能接收不到信号。 # coding: utf-8 # last modified:202310…...
【Vue】Vue2与Vue3的区别
目录 响应式系统组合式API更小的体积编译优化新的生命周期钩子更好的性能组件结构与模板TeleportFragments 静态节点标记异步组件Slots的改进更好的TypeScript支持Composition API的引入 响应式系统 Vue2使用Object.defineProperty来实现响应式系统,这意味着只有预…...

马斯克的 xAI 帝国!60亿融资背后的超级布局?
在全球科技竞技场,每个重大融资事件都是对行业格局的一次重塑。近日,埃隆马斯克的人工智能初创企业 xAI 成功完成了一轮规模空前的融资——60亿美元,此举无疑在业界投下了一枚震撼弹,标志着 AI 领域内一场新的竞赛拉开了序幕。 …...

互联网医院开发:引领智慧医疗新时代
随着科技的迅猛发展和互联网的普及,传统医疗模式正在迎来一场深刻的变革。互联网医院的崛起,打破了时间和空间的限制,为患者和医疗机构带来了更加便捷、高效、安全的医疗服务体验。本文将从技术角度深入探讨互联网医院的开发,包括…...

民国漫画杂志《时代漫画》第18期.PDF
时代漫画18.PDF: https://url03.ctfile.com/f/1779803-1248612707-27e56b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!...

java.lang.NumberFormatException: For input string:
创建SpringBoot,Mybatis的项目时候,Service层调用Mapper层时候爆出了一个错误 发现报错是一个类型转换错误,经过排查后发现是因为mapper接收的实体类中没有写空参构造...

从零开始搭建Springboot项目脚手架4:保存操作日志
目的:通过AOP切面,统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面,把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…...
持续总结中!2024年面试必问 20 道 Rocket MQ面试题(一)
一、请简述什么是RocketMQ? RocketMQ是一个开源的消息中间件,由阿里巴巴团队开发,主要设计用于分布式系统中的异步通信、应用解耦、流量削峰和消息持久化。它支持高吞吐量、高可用性、可扩展性和容错性,是构建大规模实时消息处理…...

生成式AI的GPU网络技术架构
生成式AI的GPU网络 引言:超大规模企业竞相部署拥有64K GPU的大型集群,以支撑各种生成式AI训练需求。尽管庞大Transformer模型与数据集需数千GPU,但实现GPU间任意非阻塞连接或显冗余。如何高效利用资源,成为业界关注焦点。 张量并…...
旅游卡在哪里拿货?千益畅行旅游卡源头
旅游卡是一种便捷的旅行工具,它可以提供多种优惠和特惠,让人们在旅行中更加省钱、省心。那么,在千益畅行旅游卡这里,我们该如何拿到这张神奇的旅游卡呢? 首先,千益畅行旅游卡作为一款专为旅行爱好者打造的…...
代码随想录算法训练营第四十一天| 509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯
509. 斐波那契数 题目链接:509. 斐波那契数 文档讲解:代码随想录/斐波那契数 视频讲解:视频讲解-斐波那契数 状态:已完成(1遍) 解题过程 看到题目的第一想法 虽然看了卡哥的动态规划五部曲,…...

Ribbon负载均衡(自己总结的)
文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的? Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…...

Leetcode 力扣92. 反转链表 II (抖音号:708231408)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head [1,2,3,4,5], left 2, right 4 输出:[1,4,3,2…...
OSI七层模型和TCP/IP四层模型的区别
OSI七层模型 1.物理层(Physical Layer) 实现相邻节点之间比特流的透明传输,尽可能屏蔽传输介质带来的差异。典型设备:集线器(Hub)。 2.数据链路层(Data Link Layer) 将网络层传下来…...
在虚拟机上安装MySQL和Hive
在虚拟机上安装MySQL和Hive的步骤如下。这里将分别针对MySQL和Hive的安装进行说明。 MySQL安装步骤 1. 准备工作 下载MySQL安装包,选择与你虚拟机操作系统版本相匹配的MySQL版本,例如MySQL 8.0.35。 2. 卸载旧版本(如果已安装)…...
Vue 2 和 Vue 3 中同步和异步
Vue 2 和 Vue 3 中同步和异步 Vue 2 同步和异步 同步更新 (Synchronous Updates) Vue 2 在数据更新后会进行同步渲染更新,但为了性能优化,Vue 会在内部队列中异步地进行 DOM 更新。这意味着数据变化会立即被捕捉到,但实际的 DOM 更新会被推迟到下一个事件循环队列中。new V…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...