Javaweb編程中有一種方法稱之爲Cookie,在百度百科中,這樣給cookie下定義:java
Cookie,有時也用其複數形式 Cookies。類型爲「小型文本文件」,是某些網站爲了辨別用戶身份,進行Session跟蹤而儲存在用戶本地終端上的數據(一般通過加密),由用戶客戶端計算機暫時或永久保存的信息。web
根據以上內容,也不難理解。cookie原意是「小餅乾」,這又跟小餅乾有什麼關係呢?cookie還有一項含義是「網絡餅乾」,網絡餅乾(網絡或互聯網使用者發給中央服務器信息的計算機文件),這樣就好理解了。編程
也能夠將cookie理解爲一封信件:某客戶端第一次訪問服務器時,服務器寫了一封信給客戶端(信上的內容是訪問時間、訪問對象等等),等到客戶端下一次來訪問服務器時,客戶端就會帶着這封信,這樣服務器就知道這個客戶端上次來過了,而且很清楚地瞭解上次訪問的具體時間,本次訪問結束以後,服務器又把這封信拿過來,更新爲本次訪問的信息。簡單說,就是這樣的一個過程。服務器
cookie
簡單編寫一個cookie的應用:網絡
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.util.Date; //保存用戶上一次訪問的時間 public class CookieDemo01 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解決中文亂碼問題 req.setCharacterEncoding("GBK"); resp.setCharacterEncoding("GBK"); PrintWriter out = resp.getWriter(); //服務器端從客戶端獲取cookie Cookie[] cookies = req.getCookies(); //判斷cookie是否存在 if (cookies!=null){ out.write("您上次訪問本網站的時間是:"); for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; String cookieName = cookie.getName(); //獲取cookie的名字 if (cookieName.equals("LastLoginTime")){ long llt = Long.parseLong(cookie.getValue()); //獲取cookie中的值 Date date = new Date(llt); out.write(date.toLocaleString()); } } }else { out.write("這是您第一次訪問本站!"); } //服務器給客戶端響應一個cookie,覆蓋上次的數據 Cookie lastLoginTime = new Cookie("LastLoginTime", System.currentTimeMillis()+""); resp.addCookie(lastLoginTime); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
用於清除cookie的類(將cookie的有效期設置爲0便可):app
package psl.wong.servlet; 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.util.Date; //保存用戶上一次訪問的時間 public class CookieDemo02 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Cookie lastLoginTime = new Cookie("LastLoginTime", System.currentTimeMillis() + ""); lastLoginTime.setMaxAge(0); //關鍵代碼 PrintWriter writer = resp.getWriter(); writer.write("This cookie has deleted!"); resp.addCookie(lastLoginTime); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
web.xml的註冊:ide
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <servlet> <servlet-name>CookieDemo01</servlet-name> <servlet-class>psl.wong.servlet.CookieDemo01</servlet-class> </servlet> <servlet-mapping> <servlet-name>CookieDemo01</servlet-name> <url-pattern>/login1</url-pattern> </servlet-mapping> <servlet> <servlet-name>CookieDemo02</servlet-name> <servlet-class>psl.wong.servlet.CookieDemo02</servlet-class> </servlet> <servlet-mapping> <servlet-name>CookieDemo02</servlet-name> <url-pattern>/login2</url-pattern> </servlet-mapping> </web-app>