原文: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,就这样,很晚了,不能再熬了。
分享到:
评论