错误代码:
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);
}
}
总结:没有完全弄懂第一种方式为什么错了,两种获取时间的方式为什么不同,求指教啊~~
版权声明:本文为qq_41915601原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。