1. 程式人生 > >JavaWeb 使用Cookie實現——顯示使用者上次訪問時間(教材學習筆記)

JavaWeb 使用Cookie實現——顯示使用者上次訪問時間(教材學習筆記)

當用戶訪問一些web應用時,會自動顯示該使用者上次登陸的時間,使用Cookie技術可以實現這一要求

一、建立Servlet

在eclipse中建立web-chapter05的專案,並在專案下建立一個cn.itcast.chapter05.cookie.example的包,並在包中編寫一個LastAccessServlet的Servlet類,該類主要是獲取Cookie資訊並將當前時間作為Cookie值傳送給客戶端,具體程式碼如下:

package cn.itcast.chapter05.cookie.example;

import java.io.IOException;
import java.util.Date;
import java.text.SimpleDateFormat;

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;


@WebServlet("/LastAccessServlet")
public class LastAccessServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
   	protected 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();
   		
   		//遍歷cookie陣列
   		for(int i=0;cookies!=null && i<cookies.length;i++) {
   			//如果cookie的名稱為lastAccess,則獲取該cookie的值
   			if("lastAccess".equals(cookies[i].getName())) {
   				LastAccessTime = cookies[i].getValue();
   				break;
   			}
   		}
   		if(LastAccessTime==null) {
   			response.getWriter().print("您是首次訪問本站!!!!");
   		}else {
   			response.getWriter().print("您上次的訪問時間是"+LastAccessTime);
   		}
		
   		//建立cookie,將當前時間作為cookie的值傳送給客戶端
   		String currentTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
   		Cookie cookie = new Cookie("lastAccess", currentTime);
   		
   		//傳送cookie
   		response.addCookie(cookie);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

二、在web.xml中配置相關路徑

<servlet>
    <servlet-name>LastAccessServlet</servlet-name>
    <servlet-class>cn.itcast.chapter05.cookie.example.LastAccessServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LastAccessServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

三、啟動tomcat並檢視執行效果

我嘗試了三次,結果依次如下:

可以看到確實返回了上次訪問時間