Servlet基础_0300_Cookie

2023-10-27

web服务器和Client基础:

 1.web服务器可以向客户端写内容
 2.web服务器向客户端写的内容只能是文本文件
 3.浏览器客户端可以阻止web服务器写入东西
 4.web服务器端的servlet只能拿自己webapp的写入的内容


Cookie基础:

1.Cookie:保存到客户端的一个文本文件,与特定的浏览器客户端相关
2.Cookie以"名--值"对的形式保存数据
3.创建Cookie: new Cookie(name,value)


实验一:探究Cookie的类型以及存活时间

//测试类

/**
 * @author 紫竹
 * @function 探讨Cookie 
 */
package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Cookie1Test extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		for(int i=0;i<3;i++){
			/**
			 * 没有设置时间的Cookie,默认存活的时间是存活到这个窗口关闭,当这个窗口关闭后,这个cookie就不存在了;且这个cookie它只存在于当前窗口,以及其子窗口(直接从当前窗口开一个新窗口时,
			 * 能够访问到这个cookie;如果直接开另一个新的窗口(IE8是新建会话),访问不到这个cookie)
			 * 本质:没有设置时间的Cookie只是写入到了这个浏览器的内存
			 * 
			 */
			Cookie cookie = new Cookie("current-cookie-name"+i,"current-cookie-value"+i);
			response.addCookie(cookie);
			/**
			 * 这个Cookie写入了文件,新开的浏览器也能访问这个Cookie
			 */
			Cookie cookie2 = new Cookie("persist-cookie-name"+i,"persist-cookie-value"+i);
			cookie2.setMaxAge(3600);//一个小时过期
			response.addCookie(cookie2);
		}
		PrintWriter pw = response.getWriter();
		pw.print("<a href='ShowCookiesServlet'>show all cookies</a>");
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}
	
}

找到IE的Cookie文件,里面的内容如下:

persist-cookie-name0
persist-cookie-value0
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117245440
30178360
*
persist-cookie-name1
persist-cookie-value1
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117255440
30178360
*
persist-cookie-name2
persist-cookie-value2
127.0.0.1/Servlet_0300_Cookie/servlet/
1024
1458379776
30178369
4117265440
30178360
*

内容里只存在persist的三个Cookie,证明了设置了时间的Cookie写入了文件,而没有设置时间的Cookie只在当前浏览器有效,当浏览器关闭时,临时Cookie自动清除

 

实验二:探究能够访问Cookie的路径(url)

a.先实验一种情况:

1.将web.xml做如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<servlet>
		<servlet-name>Cookie1Test</servlet-name>
		<servlet-class>com.servlet.Cookie1Test</servlet-class>
	</servlet>  	
	<servlet-mapping>
		<servlet-name>Cookie1Test</servlet-name>
		<url-pattern>/servlet/Cookie1Test</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>ShowCookiesServlet</servlet-name>
		<servlet-class>com.servlet.ShowCookiesServlet</servlet-class>
	</servlet>  	
	<servlet-mapping>
		<servlet-name>ShowCookiesServlet</servlet-name>
		<url-pattern>/ShowCookiesServlet</url-pattern>
	</servlet-mapping>
	
</web-app>

//ShowCookiesServlet.java文件如下:

/**
 * @author 紫竹
 * @function 探讨Cookie
 * 
 */

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ShowCookiesServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter pw = response.getWriter();
		Cookie[] cookies = request.getCookies();
		System.out.println(cookies);
		if(cookies!=null){
			for(int i=0;i<cookies.length;i++){
				Cookie cookie = cookies[i];
				pw.println(cookie.getName()+"    "+cookie.getValue()+"<br/>");
			}		
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}
	
}

2.删除IE临时文件夹下所有的文件,以清除所有Cookie

3.访问  http://127.0.0.1:8080/Servlet_0300_Cookie/servlet/Cookie1Test ; 然后访问   http://127.0.0.1:8080/Servlet_0300_Cookie/ShowCookiesServlet   输出结果为空,任何内容都没有

b.实验另外一种情况:

4.然后将web.xml文件修改成这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<servlet>
		<servlet-name>Cookie1Test</servlet-name>
		<servlet-class>com.servlet.Cookie1Test</servlet-class>
	</servlet>  	
	<servlet-mapping>
		<servlet-name>Cookie1Test</servlet-name>
		<url-pattern>/Cookie1Test</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>ShowCookiesServlet</servlet-name>
		<servlet-class>com.servlet.ShowCookiesServlet</servlet-class>
	</servlet>  	
	<servlet-mapping>
		<servlet-name>ShowCookiesServlet</servlet-name>
		<url-pattern>/servlet/ShowCookiesServlet</url-pattern>
	</servlet-mapping>
	
</web-app>

5.再次删除IE临时文件夹下所有的文件,以清除先前的Cookie

6.访问  http://127.0.0.1:8080/Servlet_0300_Cookie/Cookie1Test ; 然后访问   http://127.0.0.1:8080/Servlet_0300_Cookie/servlet/ShowCookiesServlet   输出结果为:

current-cookie-name0    current-cookie-value0
persist-cookie-name0    persist-cookie-value0
current-cookie-name1    current-cookie-value1
persist-cookie-name1    persist-cookie-value1
current-cookie-name2    current-cookie-value2
persist-cookie-name2    persist-cookie-value2

访问出了Cookie1Test的所有内容,证明servlet/jsp能够访问同一级路径(或者其子路径)下的所有Cookie


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet基础_0300_Cookie 的相关文章

  • 为什么byteArray的长度是22而不是20?

    我们尝试从字符串转换为Byte 使用以下 Java 代码 String source 0123456789 byte byteArray source getBytes UTF 16 我们得到一个长度为 22 字节的字节数组 我们不确定这个
  • JWT在浏览器中存储在哪里?如何防范CSRF?

    我知道基于 cookie 的身份验证 可以应用 SSL 和 HttpOnly 标志来保护基于 cookie 的身份验证免受 MITM 和 XSS 的影响 然而 需要采取更多特殊措施来保护其免受 CSRF 的影响 它们只是有点复杂 参考 ht
  • python - 将cookie添加到cookiejar

    如何在 python 中创建 cookie 并将其添加到 CookieJar 实例 我拥有 cookie 的所有信息 名称 值 域 路径等 但我不想通过 http 请求提取新的 cookie 我尝试了这个 但看起来 SimpleCookie
  • Cookie 在 ASP.net 中失去价值

    我有以下设置 cookie 的代码 string locale DropDownList this LoginUser FindControl locale SelectedValue HttpCookie cookie new HttpC
  • SQL Server 2005 - 字符编码问题

    我正在尝试将此值 llko 存储到 SQL Server 中的列中 该列是 nvarchar 1000 插入语句如下所示 N llko 但里面的数据仍然显示为 a llkoa 关于我可以尝试什么的任何想法 EDIT 我刚刚意识到我已经更改了
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • Java Swing 的 UTF-8 支持问题? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在Swing应用程序中实现UTF 8格式 https stackoverflow com questions 13804113 how to implement utf 8 format in s
  • JSP:无法弄清楚如何为 GlassFish 3.1.2 响应设置 UTF-8

    我正在使用 GlassFish 3 1 2 每当访问 JSP 页面时都会看到以下警告 PWC4011 无法将请求字符编码设置为UTF 8 context myapp 因为请求参数已经被读取 或者 ServletRequest getRead
  • Set-Cookie 在 Chrome 中不起作用

    我有一个奇怪的问题 我开发的网站之一在请求登录页面时返回防伪 cookie 当我检查 chrome 网络选项卡中的响应时 它包含标头 Set Cookie AspNetCore Antiforgery w5W7x28NAIs xxx pat
  • NSXMLParser 解析使用 Windows-1256 编码的 xml 文件

    我想解析 Windows 1256 编码的 rss 文件 但解析器没有读取它 我用 UTF8 编码做了很多解析 但只有这个不起作用 为什么 带有 Windows 1256 的 rss 文件 http youm7 com Rss asp 解决
  • jQuery:将 json 响应的编码设置为 utf8

    我收到了 json 格式的 jQuery 响应 逻辑工作正常 但我无法让他正确编码数据 如 我搜索并发现this https stackoverflow com questions 26620 how to set encoding in
  • 如何更改 TextWriter 对象中的编码?

    我有 xml 是通过 API 在另一个 resurse 中发送的 我通过 XDocument 创建它 XDocument xDoc new XDocument new XDeclaration 1 0 utf 8 yes new XElem
  • 在 Safari 上,通过重定向发送时不会保存 cookie

    我已经实现了一个 OAuth2 客户端 其中第一步是将用户发送到相关的第 3 方 本例中为 facebook 我为他们设置了一个状态 cookie 当他们从 facebook 返回时 我验证该状态 cookie 在 Chrome 中 一切都
  • 设计不能很好地处理 RoR3 应用程序上的多个子域

    我看到了很多关于这个主题的问题 但其中很多都有相互矛盾的信息 并且由于某种原因它对我不起作用 I have 顶级域名 即 lvh me 开发 每个用户都有子域 即 userdomain lvh me 登录表单位于顶级域 lvh me I w
  • 使用 WatiN 获取设置的 cookie 列表

    有没有办法使用 WatiN 获取网站设置的所有 cookie 列表 WatiN 中的 IE 浏览器类提供了GetCookie方法允许您检索特定的 cookie 但我想迭代所有已设置的 cookie 有两种方法可以让您获取 cookie Co
  • 检测 PHP 中字符串的字符集(UTF-8 或 Windows-1256)

    我正在根据 简单的 HTML DOM http simplehtmldom sourceforge net 并且我想在获取 URL 的内部文本后检测字符串的字符集 以使用以下命令将其转换为 UTF 8 iconv 我尝试了很多东西 但没有一
  • PhoneGap/Cordova:如何使用cookies(iOS)?

    我有一个适用于 iOS 的 PhoneGap Corodova 项目 在 iOS 模拟器上构建时 我使用了 Jquery Cookies 它们很好 但是 既然我的设备上有该应用程序用于测试 它们就不再工作了 我猜这只是 iOS 不支持的东西
  • 如何使用 WebStorm 等 Jetbrains IDE 一次性更改所有文件的编码

    由于某种未知的原因 我的文件编码在一段时间没有注意到的情况下发生了变化 It was UTF 8现在是windows 1252 我已重置项目编码Settings gt File encoding但我无法检测哪些文件编码错误 也无法弄清楚如何
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用 JavaScript 禁用第三方 cookie

    我正在努力根据所有在欧盟运营的公司的数据保护规则实施新的 Cookie 政策合规性 根据该规则 用户在使用任何网站时必须能够拒绝 接受除必需的 Cookie 之外的所有内容 在我客户的网站中 我可以看到正在存储以下第三方 cookie ga

随机推荐

  • 自动化测试框架总结

    自动化测试框架流程图 自动化测试框架模块 配置文件读取模块 日志模块 测试数据读取模块 测试执行模块 测试结果更新模块 异常处理模块 屏幕截图模块 自动化框架模块功能说明 配置文件读取模块 模块的主要功能是把测试项目的公共配置读取到脚本里
  • 智能家居_串口通信编程

    模拟串口 我要使用串口开发 那么 安卓系统必须要Root 让我有超级权限 串口就是文件 首先要打开串口文件 我们没有实体开发主板 使用虚拟串口驱动来代替实体开发主板 模拟android主板上的2个串口 模拟 开发板 插入了电脑 电脑就会显示
  • 2020东南大学网络空间安全保研夏令营(预推免)经验

    2020东南大学网安院保研夏令营 预推免 经验 前言 个人情况 本科某双非双一流CS专业 GPA 1 230 国家级省级奖项各有四五项 校级奖项若干 奖学金若干 项目只有一个大创 无论文 东大网安院说来话长 本来是不想报的 然鹅计算机学院的
  • mavne install 报错org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.Invoca...

    maven install 报错 org apache maven surefire util SurefireReflectionException java lang reflect InvocationTargetException
  • java校验文件路径正则表达式_正则表达式判断是否是合法路径

    在页面前端使用一个文本框 输入条件是 c test 在java中File判断是可以通过的 可以创建的 File file new File filePath if file exists file mkdir 说明是一个合法的路径 但是在w
  • 哈师大计算机学院宿舍,新生攻略

    原标题 新生攻略 哈师大所有的 秘密 都在这了 你好 我是哈师大17级的新生 我想全面的了解一下咱们学校 应该去哪了解呀 这你可算是问对人了 听说最近哈尔滨师范大学学生会的官方微信平台出了非常全的新生攻略呢 快关注它们的公众号 hsdxsh
  • Linux系列

    测试代码如下 是一个输出 Tinywan字符串与循环轮数的死循环程序 每输出一行就休眠1秒 原始输出 前台执行该程序运行效果 程序每隔一秒会在终端输出一个字符串 此时如果键入 Ctrl C 程序会收到一个 SIGINT信号 如果不做特殊处理
  • APT 攻击溯源方法

    概述 当今世界正值百年未有之大变局 网络空间成为继陆 海 空 天之后的第五大疆域 安全威胁也随之延伸至网络空间 没有网络安全就没有国家安全 在新时代网络空间安全已经上升至国家安全的高度 高级持续性威胁 Advanced Persistent
  • #PCIE# PCIE基础知识篇(3)

    写在前面 本文章转载自老狼知乎 感谢分享 随着AMD新一代CPU的发布 PCIe 4 0 Gen4 也进入了人们的视线 然而Intel随后宣传PCIe 4 0对消费市场用处不大 AMD则反讽Intel吃不到葡萄说葡萄酸 正在吃瓜群众搬板凳看
  • could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the n

    如果你在创建自定义网络时 docker network create driver bridge my net出现下面的提示 Error response from daemon could not find an available no
  • 【Vue3项目】登录注册--双Token机制

    目录 前言 什么是双Token机制 双Token的实现流程 前言 最近同项目的伙伴告诉我们一个 新词汇 双Token登录机制 emmmmm 确实没了解过 据说是在实现token长期有效的同时 防止token被第三方盗用 提高用户信息的安全性
  • ReactNative系列之十三WebStorm的JSX语法配置及自动补全设置

    1 开发ReactNative常用工具 WebStorm Sublime Atom 2 配置WebStorm的ReactNative语法 a 下载 git clone https github com virtoolswebplayer R
  • ES 搜索20 (function_score 和 field_value_factor 自定义评分)

    自定义评分 设想有个网站供用户发布博客并且可以让他们为自己喜欢的博客点赞 我们希望将更受欢迎的博客放在搜索结果列表中相对较上的位置 同时全文搜索的评分仍然作为相关度的主要排序依据 可以简单的通过存储每个博客的点赞数来实现它 在搜索时 可以将
  • DHCP协议及其实验(eNSP)

    目录 一 DHCP 1 1 DHCP作用 1 2 DHCP地址池 1 3 DHCP报文类型 1 4 DHCP工作原理 对DHCP工作原理的思考 1 5 DHCP租期更新 1 6 DHCP重绑定 1 7 IP地址释放 二 DHCP实验 2 1
  • C++控制台RPG游戏:对话系统

    具体实现思路 CTalk类继承窗口基类 里面封装了updata 和onRander 方法 里面包含了结构体SArrTalk m pArrTalk 用来存对话数据 CTalk类控制对话的进行 以及数据的渲染 而对话的内容则存在相应的文件之中
  • 使用OpenCV,Haar级联检测器进行面部、眼睛、嘴部检测

    使用OpenCV Haar级联检测器进行面部 眼睛 嘴部检测 1 效果图 2 原理 2 1 Haar级联是什么 2 2 Haar级联的问题与局限性 2 3 Haar级联预训练的模型 3 源码 3 1 图像检测 3 2 实时视频流检测 参考
  • 【进阶】使用Excel进行回归分析,预测真实值

    预备阅读 进阶 使用Excel进行相关分析 前言 昨天学习了Excel中的相关分析 在数据分析中 相关分析和回归分析关系紧密 今天来学习下Excel中的回归分析 回归分析 回归分析 regressionanalysis 是确定两种或两种以上
  • 向量大小和归一化(vector magnitude & normalization)、向量范数(vector norm)、标量/向量/矩阵/张量

    一 向量大小 首先一个向量的长度或者大小一般记为 上图中的平面向量的大小计算如下 空间向量的大小计算如下 维复向量的大小计算如下 二 向量归一化 向量归一化即将向量的方向保持不变 大小归一化到1 向量的归一化向量为 三 向量范数 范数是一种
  • ant design pro上传图片到后端

    我们这里是前端将图片上传到后端 然后后端这里再上传到阿里云的OSS 并返回一个文件的路径给前端 先看效果 上传后生成的图片 前端 pageList js const props name avatar listType picture ca
  • Servlet基础_0300_Cookie

    web服务器和Client基础 1 web服务器可以向客户端写内容 2 web服务器向客户端写的内容只能是文本文件 3 浏览器客户端可以阻止web服务器写入东西 4 web服务器端的servlet只能拿自己webapp的写入的内容 Cook