Cookie小案例

Cookie小案例:
	1记住用户最后一次的访问时间
	2记住用户登录时的用户名

// 1利用Cookie技术,记住用户上次访问的时间
public class ShowLastAccessTimeServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;character=utf-8");
		PrintWriter out = response.getWriter();
		out.write("您上次访问的时间是:");

		// 显示上次记录的时间
		Cookie[] cookies = request.getCookies();
		for (int i = 0; cookies != null && i < cookies.length; i++) {
			Cookie cookie = cookies[i];
			if ("lastAccessTime".equals(cookie.getName())) {
				String value = cookie.getName();
				long time = Long.parseLong(value);
				DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
				out.write(dateFormat.format(time));
				// out.write(new Date(time).toLocaleString()); // 过时了
			}
		}

		// 向客户端写一个cookie,取当前的访问时间为它的值
		Cookie cookie = new Cookie("lastAccessTime", System.currentTimeMillis() + "");
		// 设置maxAge
		cookie.setMaxAge(Integer.MAX_VALUE);
		cookie.setPath(request.getContextPath());
		response.addCookie(cookie);
	}

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

----------------------------------------------------------

// 2.1展示登录界面,表单自动读取指定的cookie
public class ShowLoginFormServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;character=utf-8");
		PrintWriter out = response.getWriter();

		// 读取指定的cookie,准备回显的数据
		String username = "";
		String checked = "";
		Cookie[] cookies = request.getCookies();
		for (int i = 0; cookies != null && i < cookies.length; i++) {
			Cookie cookie = cookies[i];
			if ("username".equals(cookie.getName())) {
				username = cookie.getName();
				checked = "checked='checked'";
				break;
			}
		}

		// 展示登录界面
		out.write("<form action='"+ request.getContextPath() + "/RememberUserServlet' method='post' >");
		out.write("username:<input type='text' name='username' value='" + username + "' /><br/>");
		out.write("password:<input type='password' name='password' value='' /><br/>");
		out.write("remember:<input type='checkbox' name='remember' value='" + checked + "' /><br/>");
		out.write("<input type='submit' /><br/>");
		out.write("</form>");
	}

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

// 2.2完成登录,并且向浏览器写入cookie
public class RememberUserServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;character=utf-8");
		PrintWriter out = response.getWriter();

		String username = request.getParameter("username");
		String remember = request.getParameter("remember");

		Cookie cookie = new Cookie("username", username);
		cookie.setPath(request.getContextPath());
		if(remember != null){
			cookie.setMaxAge(Integer.MAX_VALUE);
		}else {
			cookie.setMaxAge(0);
		}
		response.addCookie(cookie);
		out.write("登录成功!");
	}

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

----------------------------------------------------------
补充:

购物车的信息在关闭了浏览器后,再重新打开浏览器时还依然存在的解决方法:

	//自己写名为"JSESSIONID"的Cookie,覆盖掉原来的
	Cookie c = new Cookie("JSESSIONID",session.getId());
	c.setPath(request.getContextPath());
	c.setMaxAge(Integer.MAX_VALUE);
	response.addCookie(c);
时间: 2024-10-27 08:52:46

Cookie小案例的相关文章

Cookie小案例-----记住浏览过的商品记录

Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中很常见.这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现功能如下: 1,点击购买的商品后,显示到另一页面 2,记住用户浏览过的商品,并在页面时中显示 3,当浏览过的数量超过最大值限度时,最下面一个商品被挤下去 4,当浏览过的商品本身就在浏览记录中,显示列表将其从中间移到最上面 显示一打开网站的样子和显示用户的浏览记录: package cn.itcast.cookie; im

黑马day05 Cookie小案例&amp;记录上次访问的图书

1.建立一个javaBean Book package cn.itheima.domain; import java.io.Serializable; public class Book implements Serializable{ private String id; private String name; private String description; private String author; private String price; public Book(){} pu

Cookie插件小案例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <sc

Session小案例-----简单购物车的使用

Session小案例-----简单购物车的使用 同上篇一样,这里的处理请求和页面显示同样用的都是servlet. 功能实现如下: 1,显示网站的所有商品 2,用户点击购买后,能够记住用户选择的商品 3,实现了多个会话共享一个session 4, 实现了浏览器禁用cookie后数据共享问题的处理 首页: package cn.itcast.shopping; import java.io.IOException; import java.io.PrintWriter; import java.io

javascript常用小案例

常用javascript小案例 样式调节 //注: 这个可以控制td中的字段成行显示 #modelInfos td,th { white-space: nowrap; } //文本输入框随着内容尺寸往下变大,在input框中加入这两个属性,然后就可以控制文本输入框的大小尺寸随着内容而变 onpropertychange="this.style.height=this.scrollHeight + 'px'" oninput="this.style.height=this.sc

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W

Thinkphp 生成订单号小案例

Thinkphp 生成订单号小案例小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢思梦PHP就带领大家去解读一下生成订单号的问题!首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性 3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复.况且满足这些条件的同时订单号还要足够的短.不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程

几个数据库的小案例(一):将文本文件中的信息导入数据库的表中

从文本文件添加到数据库用户表的记录(有两个文件:frmMain.cs  SqlHelper.cs  ) //FrmMain.cs//作者:Meusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Fo

Java小案例(行星移动)

Java小案例 行星移动:参考:三百集 使用软件:idea2017,java 1,图片集:这里  (idea图片源放在target目录下,才能访问到),建议从小往上看... 2,定义MyFrame package my.university; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyFrame extends Frame {