Cookie 之顯示使用者上次訪問時間
阿新 • • 發佈:2018-12-17
錯誤程式碼:
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); } }
總結:沒有完全弄懂第一種方式為什麼錯了,兩種獲取時間的方式為什麼不同,求指教啊~~