Servlet使用Cookie和Session

一、会话技术

当用户访问web应用时,在许多情况下,web服务器必须能够跟踪用户的状态。比如许多用户在购物网站上购物,Web服务器为每个用户配置了虚拟的购物车。当某个用户请求将一件商品放入购物车时,web服务器必须根据发出请求的用户身份,找到客户的购物车,将商品放入其中。
这里我们就需要想办法去保存用户的信息,于是我们引入了会话。在计算机领域当中,是存在会话的,计算机和服务器之间进行一次通话称为会话。当打开浏览器访问一个地址成功后就意味着开启了一个新的会话。会话是一个客户与服务器之间的不中断的请求响应序列
会话的作用:跟踪用户信息,保存用户状态,共享数据等。
会话的分类: 客户端会话:Cookie,服务器端会话:Session

二、cookie

1.什么是cookie?

HTTP Cookie是服务器发送到用户浏览器并保持在本地的一小块,他会在浏览器下次向服务器发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息称为可能。

2.设置cookie

①.使用servle返回cookie信息

//接受前台的信息
String userName = request.getParameter("userName");
String password = request.getParameter("password");
//输出
System.out.println(userName + " "  +password);
//创建cookie
Cookie ck1 = new Cookie("userName", userName);
Cookie ck2 = new Cookie("password", password);//设置cookie有效期 3 天
ck1.setMaxAge(3*24*60);
ck2.setMaxAge(3*24*60);//将cookie保存到用户端
response.addCookie(ck1);
response.addCookie(ck2);

②.js前端设置cookie

//cname:key
//cvalue:value
//exdays:存储的天数
function setCookie(cname,cvalue,exdays){var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = cname+"="+cvalue+"; "+expires;
}

在这里插入图片描述

3.获取cookie

function getCookie(cname){var name = cname + "=";var ca = document.cookie.split(';');for(var i=0; i<ca.length; i++) {var c = ca[i].trim();if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }}return "";
}

4.检测是否有cookie值

function checkCookie(){var user=getCookie("account");if (user!=""){alert("欢迎 " + user + " 再次访问");}
}

三、session

1.会话跟踪技术原理

Session是服务器提供的一个会话对象,创建之后这个Session对象存储在服务器当中。但Session的使用需要和我们的浏览器产生关联。这个关联和cookie有关,其中每一个session对象都会有一个对应的sessionid,这个sessionid被存储在cookie当中。
在这里插入图片描述

2.Session的使用

①.当用户登录成时讲用户的信息保存到session当中

//设置session,服务器可以为每个用户浏览器创建一个会话对象
HttpSession session = request.getSession();  
session.setAttribute("user", userName);

②.查看在cookie当的JSESSIONID

在这里插入图片描述

③.携带本地session再次请求

HttpSession session = request.getSession();
System.out.println(session.getAttribute("user")+ "****");

请求这个servlet

<input  type="button" id="finish" name="finish" value="Finish" onclick="qingqiu()"/>function qingqiu(){var url = "http://localhost:8080/BiguangliuxiaServlet/SecondServlet"; $.ajax({type: "get",//指定提交的类型,get对应doget(),post对应dopost()url: url,data:{},//data代表key -value类型的数据dataType:'JSON', //定义数据的类型success: function (data)//success、error代表是否返回成功{},error:function (XMLHttpRequest, textStatus, errorThrown) { alert(typeof(errorThrown));}});
}

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

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

相关文章

链表和顺序表的优劣分析及其时间、空间复杂度分析

链表和顺序表的优劣分析及其时间、空间复杂度分析 一、链表和顺序表的优劣分析二、算法复杂度<font face "楷体" size 5 color blue>//上面算法的执行次数大致为&#xff1a;F&#xff08;N&#xff09; N^22*N10;   N 10,F(10) 1002010 130次   N 1…

「JavaSE」String类3:字符串常量池

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;快来卷Java啦 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 字符串常量池 &#x1f349;常量池&#x1f349;字符串常量池&#x1f349;intern 方法 &#x1f349;常量池 在Java程序中&…

dpdk环境搭建和工作原理

文章目录 1、DPDK环境搭建1.1、环境搭建1.2、编译DPDK 2、DPDK工作原理 1、DPDK环境搭建 1.1、环境搭建 工具准备&#xff1a;VMware、ubuntu16.04。 &#xff08;1&#xff09;VMware添加两个网卡。桥接网卡作为 DPDK 运行的网卡&#xff0c;NAT 网卡作为 ssh 连接的网卡。 …

Python算法题集_图论(课程表)

Python算法题集_课程表 题207&#xff1a;课程表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【循环递归全算】2) 改进版一【循环递归缓存】3) 改进版二【循环递归缓存反向计算】4) 改进版三【迭代剥离计数器检测】 4. 最优算法5. 相关资源 本…

台式电脑电源功率越大越费电吗?装机选购多少W电源

要组装一台电脑&#xff0c;我们首先需要选择硬件。 硬件搭配最关键的一点就是CPU和主板的兼容性。 硬件、电源等之间的平衡都需要仔细考虑。 那么台式电脑电源多大功率合适呢&#xff1f; 下面分享组装电脑电源瓦数选购指南&#xff0c;教您正确选择合适的电源瓦数。 让我们来…

爬取m3u8视频

网址&#xff1a;https://www.bhlsm.com/cupfoxplay/609-3-1/ 相关代码&#xff1a; #采集网址&#xff1a;https://www.bhlsm.com/cupfoxplay/609-3-1/ #正常视频网站&#xff1a;完整视频内容 # pip install pycryptodomex #流媒体文件&#xff1a;M3U8&#xff08;把完整的…

Python is not set from command line or npm configuration 报错解决

问题 在 npm install 的过程中提示 Python is not set from command line or npm configuration 的报错&#xff0c;相信不少朋友都遇到过&#xff0c;出现这个问题的原因是缺少 python 环境所导致的。 解决方法 1、安装 python 官网&#xff1a;https://www.python.org/dow…

Spring篇----第四篇

系列文章目录 文章目录 系列文章目录前言一、区分构造函数注入和 setter 注入二、spring 中有多少种 IOC 容器?三、区分 BeanFactory 和 ApplicationContext。四、列举 IoC 的一些好处。前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大…

# 浅析DPDK内存管理:Mempool

文章目录 前言Mempool工作机制Mempool数据结构rte_mempool_opsMempool操作接口rte_mempool_create&#xff1a;创建Mempoolrte_mempool_get&#xff1a;申请对象rte_mempool_put&#xff1a;释放对象 相关参考 前言 DPDK提供了一套内存池管理机制&#xff0c;以提供高效分配固…

XFF伪造 [MRCTF2020]PYWebsite1

打开题目 直接查看源码 看到一个./flag.php 访问一下 购买者的ip已经被记录&#xff0c;本地可以看到flag&#xff0c;那么使用xff或者client-ip伪造一下ip试试 bp抓包 加一个X-Forwarded-For头 得到flag

Three.js加载PLY文件

这是官方的例子 three.js webgl - PLY 我在Vue3中使用&#xff0c;测试了好久始终不显示点云数据。在网上查询后发现ply文件要放置在public目录下才行 <el-row><el-button type"primary" class"el-btn" click"IniThree1">PLY</…

Pytorch 自用 Scheduler 分享

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…