Cookie--記住上一次訪問時間案例(Java)
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!
需求
- 訪問一個Servlet,如果是第一次訪問,則提示:您好,歡迎您首次訪問。
- 如果不是第一次訪問,則提示:歡迎回來,您上次訪問時間為:顯示時間字符串
分析
- 可以采用Cookie來完成
- 在服務器中的Servlet判斷是否有一個名為lastTime的cookie
- 有:不是第一次訪問
- 響應數據:歡迎回來,您上次訪問時間為:2020年06月26日 10:52:29
- 寫回Cookie:lastTime=2020年06月26日 10:52:29
- 沒有:是第一次訪問
- 響應數據:您好,歡迎您首次訪問
- 寫回Cookie:lastTime=2020年06月26日 10:52:29
- 有:不是第一次訪問
代碼
package cn.guizimo.cookie;
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.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//設置響應的編碼
resp.setContentType("text/html;charset=utf-8");
boolean flag = false;
//獲取所有的cookie
Cookie[] cookies = req.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
//判斷是否第一次登錄
if ("lastTime".equals(name)) {
//獲取當前時間,重新發送cookie
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
//編碼
str_date = URLEncoder.encode(str_date, "utf-8");
cookie.setValue(str_date);
//設置存活時間,一個月
cookie.setMaxAge(60 * 60 * 24 * 30);
resp.addCookie(cookie);
//響應數據
String value = cookie.getValue();
//解碼
value = URLDecoder.decode(value, "utf-8");
resp.getWriter().write("<h1>歡迎回來,您上次的登錄時間為:" + value + "</h1>");
}
}
}
if (cookies == null || cookies.length == 0 || flag == false) {
//獲取當前時間,重新發送cookie
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
//編碼
str_date = URLEncoder.encode(str_date, "utf-8");
Cookie cookie = new Cookie("lastTime", str_date);
//設置存活時間,一個月
cookie.setMaxAge(60 * 60 * 24 * 30);
resp.addCookie(cookie);
resp.getWriter().write("<h1>歡迎首次訪問</h1>");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
測試
第一次訪問
再次訪問
感謝
黑馬程序員
萬能的網絡
以及勤勞的自己
關注公眾號: 歸子莫,獲取更多的資料,還有更長的學習計划