1. 程式人生 > 其它 >用IDEA記錄使用者上次訪問時間的程式碼。

用IDEA記錄使用者上次訪問時間的程式碼。

技術標籤:cookieservletsessionjava

package com.CookieDemo;

import com.utils.CookieUtils;

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.text.SimpleDateFormat; import java.util.Date; @WebServlet(name = "ServletCookieDemo",urlPatterns="/4") public class ServletCookieDemo extends HttpServlet { protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setContentType("text/html;charset=UTF-8");
// response.getWriter().println("你好,歡迎來到本網站1"); Cookie[] cookies =request.getCookies(); Cookie cookie= CookieUtils.findCookie(cookies,"a"); if(cookie == null){ response.setContentType("text/html;charset=UTF-8"); response.getWriter().println("你好,歡迎來到本網站"); }else{ String value = cookie.getValue(); response.setContentType("text/html;charset=UTF-8"); response.getWriter().println("你好,歡迎來到本網站,你上次的訪問時間為"+value+""); } String currentTime = new SimpleDateFormat("yyyy-M-d:hh:mm:ss").format(new Date()); Cookie c=new Cookie("a",currentTime); response.addCookie(c); } }
package com.utils;

import javax.servlet.http.Cookie;

/**
 * 查詢指定名稱Cookie的工具類
 */
public class CookieUtils {
    public static Cookie findCookie(Cookie[] cookies,String name){
        if(cookies==null){
            return null;
        }else {
            for(Cookie cookie:cookies){
                if(name.equals(cookie.getName())){
                    return cookie;
                }
            }return null;
        }
    }
}

實驗了一個上午終於成功了,導致失敗的原因是因為2點:
第一,在Utils工具類中,分以下情況去討論:
1.瀏覽器中沒有cookies;
2.瀏覽器中有cookie;
-2.1與給定的cookie同名
-2.2與給定的cookie不同名
在2.2這種情況下不小心將return寫到{}外面,導致最終結果怎麼樣都是null。
第二,用了過時的toLocalString()方法