显示用户上次访问时间

一、创建LastAccessServlet

该类主要用于实现获取Cookie信息并将当前时间作为Cookie值发送给客户端。

public class LastAccessServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		// 指定服务器输出内容的编码方式UTF-8,防止发生乱码
		response.setContentType("text/html;charset=utf-8");
		String lastAccessTime = null;
		// 获取所有的cookie,并将这些cookie存放在数组中
		Cookie[] cookies = request.getCookies();
		// 遍历cookies数组
		for (int i = 0; cookies != null && i < cookies.length; i++) {
			if ("lastAccess".equals(cookies[i].getName())) {
				// 如果cookie的名称为lastAccess,则获取该cookie的值
				lastAccessTime = cookies[i].getValue();
				break;
			}
		}
		// 判断是否存在名称为lastAccess的cookie
		if (lastAccessTime == null) {
			response.getWriter().print("您是首次访问本站!!!");
		} else {
			response.getWriter().print("您上次的访问时间是: " + lastAccessTime);
		}
		// 创建cookie,将当前时间作为cookie的值发送给客户端
		String currentTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
		Cookie cookie = new Cookie("lastAccess", currentTime);
		// cookie.setMaxAge(60*60); //设置cookie最大存在时间
		// 发送 cookie
		response.addCookie(cookie);
	}

	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}
}

 二、运行并访问

http://localhost:8080/chapter05/LastAccessServlet

第一次访问时

 但服务器端报错了

java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

cookie值中出现非法字符,这个字符是空格,cookie值就是时间字符串。

简单解决办法是把空格换成"-"。

String currentTime = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(new Date());

再次访问,就能在浏览器中获取到cookie

 再访问一次就能拿到上次访问时间

当关闭浏览器后再次访问,又是首次访问,原因是默认情况下,cookie对象的Max-Age=-1,即浏览器关闭,就删除cookie对象。可以通过设置cookie有效时间来解决。

cookie.setMaxAge(60*60); //设置cookie最大存在时间
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我来回答你的问题。 要实现显示用户次访问时间的功能,我们可以使用 Cookie 技术。具体实现步骤如下: 1. 判断用户是否有访问过网站,如果有,则读取该用户的访问时间。 2. 如果用户是第一次访问网站,则创建一个新的 Cookie,并将当前时间作为值保存在 Cookie 中。 3. 如果用户不是第一次访问网站,则更新 Cookie 中保存的时间为当前时间。 4. 在页面中显示用户次访问时间。 下面是一个示例代码: ``` // 判断用户是否有访问过网站 if (document.cookie.indexOf("lastVisitTime") == -1) { // 如果用户是第一次访问网站,则创建一个新的 Cookie var now = new Date(); document.cookie = "lastVisitTime=" + now.getTime(); } else { // 如果用户不是第一次访问网站,则更新 Cookie 中保存的时间为当前时间 var cookieArray = document.cookie.split("; "); for (var i = 0; i < cookieArray.length; i++) { var pair = cookieArray[i].split("="); if (pair[0] == "lastVisitTime") { var lastVisitTime = new Date(parseInt(pair[1])); var now = new Date(); document.cookie = "lastVisitTime=" + now.getTime(); break; } } } // 在页面中显示用户次访问时间 if (lastVisitTime) { console.log("您上次访问本网站的时间是:" + lastVisitTime.toLocaleString()); } ``` 以上代码中,我们先判断用户是否有访问过网站,如果没有,则创建一个新的 Cookie,并将当前时间保存在 Cookie 中;如果有,则更新 Cookie 中保存的时间为当前时间。最后,在页面中显示用户次访问时间。 希望这个回答能够帮到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值