初学javaee
Cookie
什么是Cookie
• 由于HTTP协议是无状态的,服务器端的业务必须是要有状态的。
• Cookie出现是为了存储web中的状态信息,以方便服务器端使用。
• 服务器可以根据Cookie来跟踪用户。
• 客户端首次访问服务器时,服务器先在客户端存放包含该客户的有关信息的cookie。
• 以后客户端每次请求访问服务器时,都会在HTTP请求数据中包含cookie,服务器解析HTTP请求中的cookie,从而获得客户的有关信息。
Cookie运行机制
Cookie Api
一个cookie应该包含一对key/value
创建一个 cookie 对象;向 HTTP 响应头中添加 cookie
Cookie theCookie=new Cookie(“cookieName”,
“cookieValue”);
response.addCookie(the Cookie);
生成一个Cookie并将它写到用户的硬盘上
其他
默认情况下,Cookie的生命周期为当前会话,用setMaxAge()方法设置Cookie的生命周期。如:
cookie.setMaxAge(606024*365); //设置一年的有效期(秒)
从用户硬盘上获取Cookie:
<% Cookie[] cookies = request.getCookies();
for(int i = 0; i < cookies.length; i++){
%>
<b>Cookie name:</b>
<%= cookies[i].getName() %>
<b>Cookie value:</b>
<%= cookies[i].getValue() %>
</p>
<% }
实例
int count=0;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
Cookie[] cookies=request.getCookies();//获得HTTP请求中的所有Cookie
if(cookies!=null) {//访问每一个Cookie
for(int i=0;i<cookies.length;i++) {
out.print("Cookie name:"+cookies[i].getName());
out.print("Cookie value:"+cookies[i].getValue());
out.println("Max Age:"+cookies[i].getMaxAge()+"\r\n");
}}
else {
out.println("No Cookie.");
}
response.addCookie(new Cookie("Cookie Name"+count,"cookieValue"+count));//向客户端写一个Cookie
count++;
}