今天學習的時候發現Cookie挺有意思的,就自己網上找點例子,自己敲點代碼熟練下,現在就記錄下來,分享一下。
什么是cookie??
Cookie 是一小段文本信息,伴隨着用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。Cookie 包含每次用戶訪問站點時 Web 應用程序都可以讀取的信息。因為HTTP協議是無狀態的,對於一個瀏覽器發出的多次請求,WEB服務器無法區分 是不是來源於同一個瀏覽器。所以,需要額外的數據用於維護會話。 Cookie 正是這樣的一段隨HTTP請求一起被傳遞的額外數據。可見它是用於維持服務端會話狀態的,通常由服務端寫入,在后續請求中,供服務端讀取。
實現代碼:
配置文件web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>TestCookie</servlet-name> <servlet-class>com.cookie.TestCookie</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestCookie</servlet-name> <url-pattern>/testCookie</url-pattern> </servlet-mapping> <servlet> <servlet-name>GetCookie</servlet-name> <servlet-class>com.cookie.GetCookie</servlet-class> </servlet> <servlet-mapping> <servlet-name>GetCookie</servlet-name> <url-pattern>/getCookie</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
保存Cookie的servlet:TestCookie.java
package com.cookie; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestCookie extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); String username = req.getParameter("username"); PrintWriter out = resp.getWriter(); if(username!=""){ Cookie cName = new Cookie("username",username ); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Cookie cDate = new Cookie("lastVisited",format.format(new java.util.Date())); resp.addCookie(cName); resp.addCookie(cDate); out.println("Cookie 保存成功"); out.println("<br><br>"); out.println("<a href='getCookie'>讀取Cookie內容</a>"); } out.flush(); out.close(); /*req.getRequestDispatcher(null).forward(req, resp);*/ } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } }
讀取Cookie的servlet:GetCookie.java
package com.cookie; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetCookie extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); Cookie []cookies = req.getCookies(); Cookie c = null; if(cookies!=null){ for(int i=0;i<cookies.length;i++){ c = cookies[i]; if(c.getName().equals("username")){ out.println("用戶名:"+c.getValue()); out.println("<br>"); }; if(c.getName().equals("lastVisited")){ out.println("上次登錄時間:"+c.getValue()); out.println("<br>"); }; } }else{ out.println("No cookie Existing"); } out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } }
首頁index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="testCookie"> 用戶名:<input type="text" name="username"/><br> <input type="submit" value="提交"> </form> </body> </html>
測試的結果貼圖:
最后成功!!!!!!
這只是一些測試代碼,就還有很多的cookie操作沒有寫出來,未完待續!!!