Cookie案例:登录后显示上次登录时间

文章目录

  • 一、需求
  • 二、分析
  • 三、代码实现


一、需求

(1)访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。

(2)如果不是第一次访问,则提示:欢迎回来,您上次访问的时间为:xxxxxx。

二、分析

在服务器中的Servlet中判断是否有一个名为lastTime的Cookie。

(1)没有:是第一次访问。

  • ①响应数据,您好,欢迎您首次访问。
  • ②写回Cookie:lastTime=xxxx年x月xx日,xx:xx:xx。

(2)有:不是第一次访问。

  • ①响应数据:欢迎回来,您上次访问的时间为:xxxx年x月xx日,xx:xx:xx。
  • ②写回Cookie:lastTime=xxxx年x月xx日,xx:xx:xx。

三、代码实现

package com.ql.cookie;

import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

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

/**
 * 类说明: 
 * 		Cookie案例,登录后显示上次登录时间
 * 
 * @author qianliangguo
 */

@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 响应编码
		response.setContentType("text/html;charset=utf-8");
		// 标志变量flag为false表示没有访问过
		boolean flag = false;
		
		// 获取所有的Cookie
		Cookie[] cookies = request.getCookies();
		if (cookies != null && cookies.length > 0) {
			for (Cookie cookie : cookies) {
				String name = cookie.getName();
				if ("lastTime".equals(name)) {
					flag = true;
					// 1.显示出上次访问的时间
					String value = cookie.getValue();
					value = URLDecoder.decode(value, "utf-8");
					response.getWriter().write("

欢迎回来,您上次访问时间为:" + value + "

"
); // 2.为Cookie设置新的时间 String str_date = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()); str_date = URLEncoder.encode(str_date, "utf-8"); cookie.setValue(str_date); cookie.setMaxAge(60 * 60 * 24 * 30); // 3.重新发送Cookie response.addCookie(cookie); break; } } } if (cookies == null || cookies.length == 0 || flag == false) { // 1.第一次访问,显示欢迎语 response.getWriter().write("

您好,欢迎您首次访问

"
); // 2.将当前时间加入Cookie String str_date = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()); str_date = URLEncoder.encode(str_date, "utf-8"); Cookie cookie = new Cookie("lastTime", str_date); cookie.setMaxAge(60 * 60 * 24 * 30); // 3.发送Cookie对象 response.addCookie(cookie); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }

在这里插入图片描述

你可能感兴趣的:(#,会话技术)