Cookie由服务器端生成,发送给客户端浏览器,浏览器会将其保存成某个目录下的文本文件。
Cookie的工作原理:
当用户在浏览网站时,Web服务器会将一些资料存放在客户端,这些资料
包括用户在浏览网站期间输入的文字或一些选择记录。当用户下一次访问
该网站的时候,服务器会从客户端查看是否有保留下来的Cookie信息,
然后依据Cookie的内容,呈现特定的页面内容给用户。
Cookie与session的比较:
Session是在服务器端保存用户信息,Cookie是在客户端保存用户信息。
Session中保存的是对象,Cookie保存的是字符串。
Session对象随会话结束而失效,Cookie可以长期保存在客户端。
Cookie通常用于保存不重要的用户信息,重要的信息使用session保存。
Cookie的应用:
在JSP使用Cookie的步骤:
1.在一个JSP页面创建Cookie对象
Cookie cookie=new Cookie("user",URLEncoder.encode(username,"UTF-8"));
2.写入Cookie
cookie.setMaxAge(60*60);//有效期
response.addCookie(cookie);//服务器发出的方法所以用response
3.在另一个JSP页面读取Cookie
Cookie[] cookies=request.getCookies();
String user="";
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("user")){
user=URLDecoder.decode(cookies[i].getValue(),"UTF-8");
}
}
示列:
在另一个JSP页面读取Cookie,写入Cookie。
<% request.setCharacterEncoding("UTF-8"); String username=request.getParameter("username"); String password=request.getParameter("password"); if(username.equals("系统管理员") && password.equals("123")){ Cookie cookie=new Cookie("user",URLEncoder.encode(username,"UTF-8")); cookie.setMaxAge(60*60); response.addCookie(cookie); session.setAttribute("user",username); response.sendRedirect("index.jsp"); //out.print("恭喜你,登录成功!<br/>"); //out.print("用户名:" + username + "<br/>"); //out.print("密码:" + password + "<br/>"); }else{ request.setAttribute("message", "登录失败,用户名或密码输入不正确!"); request.getRequestDispatcher("userLogin.jsp").forward(request, response); } %>
在另一个JSP页面读取Cookie。
<% Cookie[] cookies=request.getCookies(); String user=""; for(int i=0;i<cookies.length;i++){ if(cookies[i].getName().equals("user")){ user = URLDecoder.decode(cookies[i].getValue(),"UTF-8"); } } Object o=session.getAttribute("user"); if(o==null){ //显示用户名密码,可以在此登录 %> <label>用户名</label>
<input type="text" name="username"
value="<%=user%>"/><label>密码</label>
<input type="text" name="password" />
<button>登录</button> <% }else{ //显示“欢迎你,XXX” out.print("欢迎你,"+o.toString()); %> <a href="userLogout.jsp">注销</a> <% } %>