Java-web -会话技术

本文介绍了客户端和服务端之间的会话技术,包括Cookie的工作原理及其限制,如存储容量和有效期设定等。此外,还提供了如何利用Cookie记录用户登录时间的具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话技术

 * 客户端与服务端之间的交互 就是会话

 * 什么是会话? 相当于打电话

 * 访问网页时 只要浏览器不关闭

 * 点击多次连接 也叫一次会话。

 * 关闭浏览器 就结束会话了

 * 1.客户端技术

 * Cookie 保存在客户端(浏览器)就是一个文件

 * 每一个站点(网站)可以保存20个cookie

 * 每个浏览器可以保存300个cookie

 * 每个cookie可以保存4kb的数据

 * cookie默认存活时间 一次会话(关闭浏览器 cookie被清除)

 * 默认是保存在 浏览器的内存当中

 * 可以设置cookie的存活时间 1年

 * 浏览器就会将cookie保存到硬盘当中(保存到文件中)

 * 注意:cookie不能保存中文

 * 

 * 设置cookie的存活时间

 * setMaxAge(时间 以秒为单位)

 * 整治:值是多少 浏览器就保存多少秒

 * 负值:浏览器不会存储cookie到硬盘当中

 * 当浏览器关闭 会话结束 这个cookie被删除

 * 0时 cookie被删除

 * 

 * 2.服务端技术 HttpSession

 * Session是保存在服务端

 * 

 * 需求:显示上一次(最后)的登录时间

 * (关闭浏览器之后 再访问还能显示)

 * 

 * 第一次访问servle时 将时间保存到cookie

 * 再响应回浏览器 让浏览器存储起来

 * 下一次再访问时 通过request请求

 * 获取之前保存的cookie 显示之前存储时间即可

public class Demo04 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		
		// 接到请求先读取cookie
		// 获取请求的cookie
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {
			// 遍历cookie的数组
			for (Cookie cookie : cookies) {
				// 找出之前保存的cookie按名字
				if (cookie.getName().equals("lastTime")) {
					// 获取cookie的值
					String value = cookie.getValue();
					// 将字符串转化成long型
					long time = Long.parseLong(value);
					// 转换成时间
					Date date = new Date(time);
					// 转换时间的格式(格式化时间)
					SimpleDateFormat dateFormat = new SimpleDateFormat("yyy:MM:dd HH:mm:ss");
					// 格式化date对象
					String lastTime = dateFormat.format(date);
					// 写到网页上
					response.getWriter().write("上一次的登录时间:" + lastTime);
				}
			}
		}
		
		// 创建cookie对象
		Cookie cookie = new Cookie("lastTime", System.currentTimeMillis() + "");
		// 设置cookie的保存路径
		// "/" 表示该工程下的所有servlet都能访问
		// 保存时 相当于 按工程名来存
		// "/SH-web-004/servlet"
		// 相当于之后 servlet目录下的网页能访问
		cookie.setPath("/SH-web-004/servlet");
		// 设置cookie的存活时间
		cookie.setMaxAge(60 * 5);
		// 添加cookie到响应中
		response.addCookie(cookie);
	}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值