JavaWeb之Cookie

本文介绍了JavaWeb中Cookie的工作原理及应用案例。通过设置Cookie,可以实现客户端状态的跟踪,如记录用户最近浏览过的商品。文章详细展示了如何利用Cookie进行会话管理。

JavaWeb之Cookie:会话跟踪的一种机制

  Cookie 机制采用的是客户端保持HTTP状态信息的方案。

  Cookie 是在浏览器访问WEB服务器的某个资源是,有WEB服务器再HTTP响应消息头中附带传送给浏览器的一个小文本文件,一旦WEB浏览器保存的某个Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cookie回传个WEB服务器。
  如果创建了一个Cookie,并将他发送到浏览器,默认情况下它是一个会话级别的Cookie,存储在浏览器的内存中,用户默认退出浏览器后被删除,若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。

  ----setMaxAge 设置Cookie的最大时效,以秒为单位,若为0,表示立即删除该Cookie,若为负数表示不存储该Cookie。

  ----setPath 设置Cookie的作用范围。可以作用当前目录和当前目录的子目录,但不能作用于当前目录的上一级目录。

  ----response.addCookie(cookie);调用response的一个方法把Cookie 传给客户端。

使用Cookie 实现显示最近浏览的商品:

books.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<a href="book.jsp?book=1">1</a><br>
<a href="book.jsp?book=2">2</a><br>
<a href="book.jsp?book=3">3</a><br>
<a href="book.jsp?book=4">4</a><br>
<a href="book.jsp?book=5">5</a><br>
<a href="book.jsp?book=6">6</a><br>
<a href="book.jsp?book=7">7</a><br>
<a href="book.jsp?book=AAA">AAA</a><br>

<br><br>

<%
//获取所有的Cookie,选择符合条件的
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
			for (Cookie c : cookies) {
				String cookieName = c.getName();
				if (cookieName.startsWith("BOOK_")) {
					out.print(c.getValue());
					out.print("<br>");
				}
			}
		}
%>

</body>
</html>
book.jsp

<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h4>Book Detail Page</h4>
	Book:<%=request.getParameter("book")%>

	<br>
	<br>

	<a href="books.jsp">Return</a>
	<%
		String book = request.getParameter("book");
		//1.确定要被删除的Cookie
		//前提:BOOK开头的Cookie数量大于或等于5
		Cookie[] cookies = request.getCookies();
		List<Cookie> bookCookies = new ArrayList<Cookie>();
		//用来保存和books.jsp传入的book匹配的那个Cookie
		Cookie tempCookie = null;
		if (cookies != null && cookies.length > 0) {
			for (Cookie c : cookies) {
				String cookieName = c.getName();
				if (cookieName.startsWith("BOOK_")) {
					bookCookies.add(c);
					
					if(c.getValue().equals(book)){
						tempCookie = c;
					}
				}
			}
		}
		//若从books.jsp页面传入的book不在Book_的Cookie中则删除第一个Cookie
		if(bookCookies.size() > 5 && tempCookie == null){
			tempCookie = bookCookies.get(0);
		}
		//若在其中,则删除该Cookie,放置新的进去
		if(tempCookie != null){
			tempCookie.setMaxAge(0);
			response.addCookie(tempCookie);
		}

		//2.把从books.jsp传入的book作为一个Cookie返回
		Cookie c = new Cookie("BOOK_" + book, book);
		response.addCookie(c);
	%>

</body>
</html>



【SCI一区复现】基于配电网韧性提升的应急移动电源预配置和动态调度(下)—MPS动态调度(Matlab代码实现)内容概要:本文档围绕“基于配电网韧性提升的应急移动电源预配置和动态调度”主题,重点介绍MPS(Mobile Power Sources)动态调度的Matlab代码实现,是SCI一区论文复现的技术资料。内容涵盖在灾害或故障等极端场景下,如何通过优化算法对应急移动电源进行科学调度,以提升配电网在突发事件中的恢复能力与供电可靠性。文档强调采用先进的智能优化算法进行建模求解,并结合IEEE标准测试系统(如IEEE33节点)进行仿真验证,具有较强的学术前沿性和工程应用价值。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电力系统优化、配电网韧性、应急电源调度等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现高水平期刊(SCI一区、IEEE顶刊)中关于配电网韧性与移动电源调度的研究成果;②支撑科研项目中的模型构建与算法开发,提升配电网在故障后的快速恢复能力;③为电力系统应急调度策略提供仿真工具与技术参考。; 阅读建议:建议结合前篇“MPS预配置”内容系统学习,重点关注动态调度模型的数学建模、目标函数设计与Matlab代码实现细节,建议配合YALMIP等优化工具包进行仿真实验,并参考文中提供的网盘资源获取完整代码与数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值