javaweb学习(5)--Cookie

Posted by lizhao on 09-16,2016

cookie:

1.  服务器往客户端写内容的,只能是文本格式
2.  客户端可以阻止服务器写入
3.  只能拿到自己写的东西
4.  Cookie时效性:1.以文件形式保存起来,可持续;2关闭浏览器就没了
5.  一个servlet/jsp设置的cookies你能够拿到同一个路径或路径下面的cookie,指的是是url

各浏览器cookie在window下的路径:

C:\Users\用户名\AppData\Local\Microsoft\Windows\INetCookies
在IE浏览器中,IE将各个站点的Cookie分别保存为一个XXX.txt这样的纯文本文件(文件个数可能很多,但文件大小都较小);而Firefox和Chrome是将所有的Cookie都保存在一个文件中(文件大小较大),该文件的格式为SQLite3数据库格式的文件。
Firefox的Cookie数据位于:%APPDATA%\Mozilla\Firefox\Profiles\ 目录中的xxx.default目录,名为cookies.sqlite的文件。
如:C:\Users\jay\AppData\Roaming\Mozilla\Firefox\Profiles\ji4grfex.default\cookies.sqlite
在Firefox中查看cookie, 可以选择”工具 > 选项 >” “隐私 > 显示cookie”。
Chrome的Cookie数据位于:%LOCALAPPDATA%\Google\Chrome\User Data\Default\ 目录中,名为Cookies的文件。
如:C:\Users\jay\AppData\Local\Google\Chrome\User Data\Default\Cookies

参考:http://smilejay.com/2013/04/browser-cookie-location/

设置和显示cookie
这方面其实都是基础内容,没有为什么,就是记住这些个方法就是了。下面贴上代码。

设置cookie:

public class SetCookiesServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //循环设置cookie
        for(int i=0;i<3;i++){
            //这个cookie是存在在内存之中,关闭窗口之后就没了
            Cookie cookie = new Cookie("Session-Cookie-"+i, "Cookie-Value-s"+i);
            resp.addCookie(cookie);
            //这是cookie写到了本地文件之中
            cookie = new Cookie("Persistent-Cookie-"+i, "Cookie-Value-P"+i);
            cookie.setMaxAge(3600);
            resp.addCookie(cookie);
        }
        resp.setContentType("text/html;charset=gb2312");
        PrintWriter writer = resp.getWriter();
        String title = "Setting Cookies";
        writer.println("<html><head><title>设置cookie</title></head>"
            + "<body> <h1>下面这个连接点击之后能显示cookie</h1>"
            + "<br />"
            + "<a href=\"ShowCookieServlet\">"
            + "<code>显示cookie</code> servlet</a>"
            + "<br />"
            + "</body>"
            + "</html>"
            );
    }
}

显示cookie

public class ShowCookiesServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=gb2312");
        PrintWriter writer = resp.getWriter();
        writer.println("<html><head><title>客户端cookie</title></head>"
            + "<body> "
            + "<table >"
            +"<tr><th>cookie名字</th><th>cookie内容</th></tr>"
            );

        //遍历所有的cookie
        Cookie[] cookies = req.getCookies();
        if(cookies !=null){
            Cookie cookie ;
            for(int i = 0;i<cookies.length;i++){
                cookie = cookies[i];
                writer.println("<tr><td>"+cookie.getName()
                    + "</td><td>"
                    + cookie.getValue()
                    + "</td></tr>");
            }
        }
        writer.println("<table >"
                + "</body>"
                + "</html>");
    }

}