`
codsoul
  • 浏览: 213341 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

【转】(Web开发)Servlet实现Cookie实例

 
阅读更多
原文:http://blog.163.com/sean_zwx/blog/static/16903275520108603751166/?fromdm&fromSearch&isFromSearchEngine=yes



今天我给大家看一个Servlet下实现Cookie的例子,Cookie在网站上有很广泛的应用,能够实现将客户端的数据,暂时保存在本机,方便日后登陆,举个例子吧,比如你在登陆论坛的时候,会有一个选择项——保持30天登陆,这就用到的Cookie,将你的账号和密码以16进制的形式保存在你的电脑里的临时文件夹下,在下次登陆的时候,浏览器将自动为你加载Cookie




整个Cookie的过程包括2个过程,1个是写入Cookie,1个就是读取Cookie,我用Eclipse分别编写这2个类,并且部署到我的Web项目文件夹下的classes,然后在web.xml里部署这2个类,这个过程我在上一篇日志有详细介绍,不懂的朋友可以参考上一篇日志,我在这里就不再赘述了。







接下来我们分别来看看这2个类的具体代码



1.首先是写入Cookie的类setCookie



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 setCookie extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
  //添加6条cookie,每次增加2条
  for(int i=0;i<3;i++)
  {
   Cookie cookie = new Cookie("Cookie-"+(i+1),"Value-"+(i+1));
   //当前的Cookie只保存在打开窗口的内存中,并没有写入客户端磁盘
   resp.addCookie(cookie);
  
   Cookie timecookie = new Cookie("TimeCookie-"+(i+1),"Value-"+(i+1));
   //设置Cookie的生命为1小时
   timecookie.setMaxAge(3600);
   resp.addCookie(timecookie);
  }
 
  //解除中文乱码
  resp.setContentType("text/html;charset=GBK");
 
  PrintWriter pw = resp.getWriter();
  pw.println("<html><head><title>设置Cookie</title></head>"
    +"<body><h1 align=center>设置Cookie</h1>" + "<a href=\"showCookie\">查看cookies</a>" + "</body></html>");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
  doGet(req,resp);
}
}




上面就是往客户端浏览器写入了6条Cookie,值得注意的是,这6条Cookie中,其中的3条cookie只是保存在客户端浏览器的窗口内存,并没有生命,也就是说当浏览器关闭的时候,就自动删除这3条记录,而另外的3条timecookie则具有1小时的生命,将在客户端的硬盘的临时文件夹下保存1小时,1小时后,将自动删除该Cookie。





下面看看,读取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 showCookie extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
  resp.setContentType("text/html;charset=GBK");
  PrintWriter pw = resp.getWriter();
 
  String html = "<html><head><title>获取客户端Cookie</title></head>" +
    "<body><table border=1><tr><th>Cookie name</th><th>Cookie value</th></tr>";
  Cookie cookies[] = req.getCookies();
  if(cookies != null)
  {
   Cookie cookie;
   for(int i=0;i<cookies.length;i++)
   {
    cookie = cookies[i];
    html += "<tr><td>"+cookie.getName()+"</td><td>"+cookie.getValue()+"</td></tr>";
   }
  }
  html += "</table></body></html>";
  //发送html代码
  pw.println(html);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
  doGet(req,resp);
}


}










好,我们来看看运行的效果,首先打开浏览器,输入网址http://127.0.0.1/Cookie/setCookie









这就已经向客户端写入的6条Cookie了,然后我们点击查看来读取客户端的Cookie


这就是我们添加的6条Cookie,就这样,很晚了,不能再熬了。
分享到:
评论
Global site tag (gtag.js) - Google Analytics