自己找不到逻辑哪有错,大神们能否帮帮忙
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.util.Date;
@WebServlet("/CookieExample02")
public class CookieExample02 extends HttpServlet
{
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
boolean flag=false;
Cookie[] cookies = request.getCookies();
for(Cookie cookie:cookies)
{
if(cookie.getName().equals("lasttime"))
{
flag=true;
response.getWriter().write("lasttime"+cookie.getValue());
break;
}
}
if(!flag)
{
response.getWriter().write("welcome the first time");
}
response.addCookie(new Cookie("lasttime",new Date().toString()));
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
this.doPost(request, response);
}
}
如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。
时间是服务端放入cookie响应给客户端,如果客户端下次请求不将你响应回去的时间放入新请求的cookie中,你的服务端自然拿不到上次的时间。这个问题最好还是对cookie做一下持久化吧,Redis或者mysql都可以,第二次请求从持久化的cookie库判断是否已经登录过,是否操作过登出,以及登录时间登出时间等等信息,这样既能解决你当前的问题,还可以应对以后扩展机器后cookie共享的问题