记住上一次的访问时间
需求:
1.访问一个servlet,如果第一次访问,则提示:您好,欢迎首次访问
2.如果不是第一次访问,则提示:欢迎回来,您上一次访问时间为:显示时间
分析:
1.可以采用Cookie来完成
2.在服务器中的Servlet判断是否有一个名为lastTime的Cookie
——有:不是比一次访问
————欢迎回来,您上一次访问时间为:显示时间
————写回Cookie:lastTime=时间
——没有:是第一次访问
————响应数据:您好欢迎首次访问
————写回Cookie:lastTime=时间
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.text.SimpleDateFormat;
import java.util.Date;
@WebServlet(name="zy",urlPatterns = "/hello6")
public class ZY extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
//设置响应的消息体的数据格式以及编码
resp.setContentType("text/html;charset=utf-8");
//创建lastname对象 并添加cookie
Cookie lastname = new Cookie("lastname", "2022");
resp.addCookie(lastname);
//获取所有Cookie对象
Cookie[] cookies = req.getCookies();
//创建开关
boolean flag=false;
// 遍历cookie对象
if (cookies != null && cookies.length > 0) {
for (Cookie c : cookies) {
c.setMaxAge(60*60*24);
// 判断是否有名字为 lastname的cookie
if (c.getName().equals("lastname")) {
flag=true;
//创建时间对象
Date date = new Date();
//转换格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String time = sdf.format(date);
c.setValue(time);
String lsvalue = c.getValue();
System.out.println("您上一次的访问时间是"+lsvalue);
// 返回给浏览器的响应信息
resp.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+lsvalue+"</h1>");
break;
}
}
}
if((cookies == null || cookies.length == 0 || flag) == false){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String time = sdf.format(date);
Cookie cookie = new Cookie("lastTime","第一次");
//设置cookie的存活时间
cookie.setMaxAge(60 * 60 * 24);
resp.addCookie(cookie);
//修改cookie的value值
cookie.setValue(time);
String value = cookie.getValue();
resp.getWriter().write("<h1>您好,欢迎您首次访问,本次访问时间为+"+value+"</h1>");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}