快速熱身:
Cookie可以用來通過瀏覽器在客戶端存儲相關用戶信息。
Cookie是Web服務器發送到瀏覽器,並且存儲在客戶端計算機磁盤中的一些文本信息 。
在瀏覽器發送一個請求到Web服務器時,如果Cookie沒有過期,服務器端的程序就會將其中的信息讀取到。
有時Cookie被用於在用戶不知情的情況下收集用戶的信息,造成一些保密信息的泄露。
用戶可能會在瀏覽器上關閉Cookie功能。
有效期:可以設置有效期的時間。
測試Cookie:
1.新建一個web工程。
2.在src目錄下新建一個報名為com.neusoft.servlet_cookie的包。
3.在該包下建立兩個名為cookieRead和cookieTest的servlet,cookieTest的內容為:
————————————————————————————————————
package com.neusoft.servlet_cookie;
import java.io.IOException;
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 cookieTest extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312;");
Cookie cookie = new Cookie("userName", "wjl");//設置要向cookie中寫入的信息
cookie.setMaxAge(5);//設置cookie的有效時間
response.addCookie(cookie);//將cookie寫到客戶端
response.sendRedirect("cookieRead");
}
}
————————————————————————————————————
cookieRead的內容為:
————————————————————————————————————
package com.neusoft.servlet_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 cookieRead extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312;");
PrintWriter out = response.getWriter();
Cookie[] cookie = request.getCookies();
for (int i = 0; i < cookie.length; i++) {
out.println("userName:" + cookie[i].getName() + "Value:"
+ cookie[i].getValue());
}
out.flush();
out.close();
}
}
————————————————————————————————————
4.servlet在web.xml中的配置信息如下:
————————————————————————————————————
<servlet>
<servlet-name>cookieTest</servlet-name> <servlet-class>com.neusoft.servlet_cookie.cookieTest</servlet-class>
</servlet>
<servlet>
<servlet-name>cookieRead</servlet-name> <servlet-class>com.neusoft.servlet_cookie.cookieRead</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cookieTest</servlet-name>
<url-pattern>/servlet/cookieTest</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cookieRead</servlet-name>
<url-pattern>/servlet/cookieRead</url-pattern>
</servlet-mapping>
————————————————————————————————————
5.重新發佈工程,在瀏覽器中輸入地址http://localhost:8080/Test/servlet/cookieTest,此時cookie已經寫入到瞭客戶端的計算機中,然後重定向到http://localhost:8080/Test/servlet/cookieRead頁面時就把存儲在客戶端計算機中的有效時間是5秒的cookie對象中的內容讀取到瞭,此時頁面上顯示的信息如下:
userName:userNameValue:wjl
5秒中後cookie對象失效,此時刷新http://localhost:8080/Test/servlet/cookieRead頁面,該頁面將不能讀取到cookie對象中的值,頁面信息如下所示:
HTTP Status 500 –
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.neusoft.servlet_cookie.cookieRead.doPost(cookieRead.java:23)
com.neusoft.servlet_cookie.cookieRead.doGet(cookieRead.java:15)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Apache Tomcat/6.0.14
作者“極致書生”