Java:使用Cookie记录客户端浏览器上次访问时间
程序员文章站
2024-03-20 14:12:34
...
package cn.gpxxg.web.servlet;
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;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/servletCookieDemo03")
public class ServletCookieDemo03 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// 1、设置返回的格式
response.setContentType("text/html;charset=utf-8");
boolean flag = false;
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
String name = cookie.getName();
if ("lastTime".equals(name))
{
// 找到了lastTime的cookie,获取值
flag = true;
String value = cookie.getValue();
System.out.println("解码前:" + value);
value = URLDecoder.decode(value, "utf-8");
System.out.println("解码后:" + value);
// 设置新的cookie,记录最新的时间
setLastTime(response, cookie);
// 输出到页面上
response.getWriter().write("<h1>欢迎回来,您上次的时间为" + value + "<h1>");
break;
}
}
if (flag == false)
{
// 如果是一次来,提示欢迎新客户来,希望有一个好的购物体验
// 1、设置返回的格式
response.setContentType("text/html;charset=utf-8");
// 2、记录当前时间到cookie,发送到客户端浏览器
this.setLastTime(response, null);
// 3、返回内容
response.getWriter().write("<h1>欢迎新客户来,希望有一个好的购物体验</h1>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void setLastTime(HttpServletResponse response, Cookie cookie1) throws UnsupportedEncodingException {
// 如果是lastTime的cookie,删除掉重新赋值
if (cookie1 != null && "lastTime".equals(cookie1.getName()))
cookie1.setMaxAge(0);
// 时间格式
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String format = sdf.format(date);
System.out.println("编码前:" + format);
format = URLEncoder.encode(format, "utf-8");
System.out.println("编码后:" + format);
// 设置coolkie为当前时间
Cookie cookie = new Cookie("lastTime", format);
System.out.println(cookie);
// 设置cookie的有效时间为1天
cookie.setMaxAge(86400);
response.addCookie(cookie);
}
}
上一篇: php和session实现简单的登录记忆
下一篇: 顺序表的c语言实现