1.什么是HTTP Cookie?
Wikipedia给出的定义是:An HTTP cookie is a small piece of data sent from a website and stored in the user's web browser while the user is browsing.
概括一下:
1) HTTP cookie首先是数据 -> 在服务器端被创建 -> Set-Cookie响应头携带Cookie信息 -> 通过HTTP协议传输 -> 存储于客户端。
2) 当客户端再一次访问该网站的时候 -> Cookie请求头携带Cookie信息 -> 通过HTTP协议传输 -> 服务端拿到Cookie进行解析。
2. 为什么要使用Cookie
Cookie最早出现于1994年,当时网景公司的Lou Montulli首先将Cookie技术用于Web通信。随着时代的发展,Cookie的标准文档被一次次修改细化。最新的Cookie标准制定于2011年,具体可以参照RFC2965文档。
Cookie的出现是解决了HTTP协议的无状态性,为浏览器和Web服务器之间提供了一种有效的状态信息交换方式。下面通过一个简单的用户登录系统示例,简单介绍Cookie在JavaWeb中的应用。
3.项目代码示例:
1)项目结构
2)项目代码:
登陆页面login.jsp核心代码:
<%
String username = "";
String password = ""; Cookie[] cookies = request.getCookies(); if(cookies != null && cookies.length > 0) {
for(Cookie cookie: cookies) {
if(cookie.getName().equals("user")){
username = cookie.getValue();
}
if(cookie.getName().equals("pass")){
password = cookie.getValue();
}
}
}
%>
<form action="LoginServlet" method="post">
<h1>User Login</h1>
username:<input type="text" name="user" value="<%=username%>" /><br>
password:<input type="text" name="pass" value="<%=password%>" /><br>
<input type="submit" value="confirm" />
</form>
处理代码LoginSerlvet核心代码:
String username = request.getParameter("user");
String password = request.getParameter("pass"); Cookie userCookie = new Cookie("user", username);
Cookie passCookie = new Cookie("pass", password); response.addCookie(userCookie);
response.addCookie(passCookie); if(username.equals("petersong") && password.equals("12345")) {
request.getRequestDispatcher("/login_success.html").forward(request, response);
} else {
request.getRequestDispatcher("/login_failure.html").forward(request, response);
}
4.项目运行实例
1)第一次访问login.jsp
2)第一访问LoginServlet
3)第二次访问login.jsp