记录用户上次访问时间(cookie和session)

本文介绍了一个使用Servlet实现的用户计数系统,该系统利用Cookie记录每位用户的访问情况,并展示用户总数及个人上次访问时间。

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

package javapack;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

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

import utils.cookieutils;

public class countservlet extends HttpServlet {

	/*
	 * (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 * 显示登录成功的用户个数
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		int count=(Integer) this.getServletContext().getAttribute("count");
		//获得从浏览器带来的所有cookies
		Cookie[] cookies = request.getCookies();
		//从数组中查找指定名称的cookie
		Cookie cookie = cookieutils.findcookie(cookies, "lastvisit");
		//创建一个cookie的对象
		Cookie cook =new Cookie("lastvisit", ""+System.currentTimeMillis());//获取当前时间存入cookie中
		/*cook.setPath("/J2EE");//设置cookie的有效路径
		cook.setMaxAge(3600);//设置cookie的有效时间,以s为单位
		 */		response.addCookie(cook);//保存到浏览器端
		 if(cookie==null){
			 //第一次访问
			 response.getWriter().println("<h1>您是第"+count+"位登录成功的用户<h1>");
		 }else{
			 long l=Long.parseLong(cookie.getValue());//将string转换成long
			 Date d=new Date(l);
			 response.getWriter().println("<h1>您是第"+count+"位登录成功的用户<h1>"+"您上次访问时间为"+d.toLocaleString());
		 }


	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);//post方式和get方式执行同一方法
	}

}
package utils;


import javax.servlet.http.Cookie;


public class cookieutils {
public static Cookie findcookie(Cookie[] cookies,String name){
	if(cookies==null){
		return null;
	}
	else{
		for(Cookie cookie:cookies){
			if(name.equals(cookie.getName())){
				return cookie;
			}
			
		}
		return null;
	}
}
}


在Java Web开发中,Cookie是一种小的数据存储机制,通常用于跟踪用户的会话状态或提供个性化信息。要利用Cookie显示用户上次访问时间,你可以按照以下步骤操作: 1. **创建Cookie**: 当用户访问某个页面(如登录成功后),服务器端可以设置一个Cookie,存储当前时间戳或其他表示访问时间的标识。 ```java HttpSession session = request.getSession(); Date lastVisit = new Date(); Cookie cookie = new Cookie("lastVisit", lastVisit.toString()); cookie.setMaxAge(60 * 60 * 24); // 设置有效期为一天 response.addCookie(cookie); ``` 2. **读取Cookie**: 用户下次访问时,从客户端请求中获取Cookie,并解析出时间戳。 ```java Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie c : cookies) { if ("lastVisit".equals(c.getName())) { String timestampStr = c.getValue(); try { Date lastVisitFromCookie = new Date(Long.parseLong(timestampStr)); System.out.println("Last visit time: " + lastVisitFromCookie); } catch (Exception e) { e.printStackTrace(); } } } } ``` 3. **更新Cookie**: 如果你想记录用户的实时访问时间,可以在每次访问时更新Cookie。 ```java Date currentTime = new Date(); // 更新服务器保存的lastVisit值 session.setAttribute("lastVisit", currentTime); // 更新Cookie时间 cookie.setValue(currentTime.toString()); cookie.setMaxAge(-1); // 删除过期标志,让浏览器自动处理 response.addCookie(cookie); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值