错误代码:
String currentTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss") .format(new Date()); Cookie cookie = new Cookie("lastAccess",currentTime);
正确代码:
Cookie cookie = new Cookie("lastAccess",System.currentTimeMillis()+"");
完整代码:
import javax.servlet.ServletException; 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.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; public class LastAccessServlet extends HttpServlet { 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(); PrintWriter out = response.getWriter(); long time = 0; // 遍历cookies数组 for (int i = 0; cookies != null && i<cookies.length; i++) { Cookie c = cookies[i]; if ("lastAccess".equals(c.getName())) { // 如果cookie的名称为lastAccess,则获取该cookie的值 lastAccessTime = c.getValue(); time = Long.parseLong(lastAccessTime); break; } } // 判断是否存在名称为lastAccess的cookie if (lastAccessTime == null) { out.print("您是首次访问本站!!!"); } else { out.print("您上次的访问时间是: " + new Date(time).toLocaleString()); } Cookie cookie = new Cookie("lastAccess",System.currentTimeMillis()+""); //cookie.setMaxAge(60*60); //设置cookie最大存在时间 // 发送 cookie response.addCookie(cookie); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } }总结:没有完全弄懂第一种方式为什么错了,两种获取时间的方式为什么不同,求指教啊~~