[Jweb] Cookie -- SetCookies.java / ShowCookies.java

知识点笔记   Cookie 与 Session 
 * http 协议的无连接性要求出现一种保存 C / S 间状态的机制.
     (借你100W,防止忘,我在你脑门贴个小纸条,下次看到你,我就想起来了。)
 * Cookie: 保存到客户端的一个文本文件,与特定客户相关
 * Cookie 以 "名 - 值 对" 的形式保存数据
 * 创建 Cookie: new Cookie     在客户端记录东西 叫做 Cookie
	  1). 服务器端可以往客户端这边写内容 (Cookie 适合锦上添花)
	  2). 只能是文本内容
	  3). 在客户端这边可以选择阻止对方来写东西
	  4). 只能拿自己的webapp写入的东西
	  5). 每个浏览器有一个独一无二的编号
	     服务器端通过 cookie 可以区分是广州的客户端还是美国的客户端...
 Session , Session 是一个篮子
  只要是同一套有父子关系的窗口,都可以访问到同一个 Session。
  启发 :默认 session 是依赖 cookie 的。若cookie完全禁用后解决方案 : 重写URL。
  新浪邮箱 : 做学问不严谨。不像IBM等这样的大公司。
  	+ "<a href=" + response.encodeURL(request.getRequestURL().toString()) + ">test</a><BR>" 
	+ "<a href=" + request.getRequestURI().toString() + ">test</a>" 
   china-pub买书,例如 : 最近浏览的列表,一般是写cookie里面了。

SetCookies.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

//设置Cookie

//1:服务器可以向客户端写内容
//2:只能是文本内容
//3:客户端可以阻止服务器写入
//4:只能拿自己webapp写入的东西
//5:Cookie分为两种,第一种:属于窗口/子窗口(放在内存中的),第二种:属于文本(有生命周期的)
//6:一个servlet/jsp设置的cookies能够被同一个路径下面或者子路径下面的servlet/jsp读到 (路径 = URL)(路径 != 真实文件路径)

public class SetCookies extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        for (int i = 0; i < 3; i++) {
            // Default maxAge is -1, indicating cookie applies only to current
            // browsing session.
            Cookie cookie = new Cookie("Session-Cookie-" + i, "Cookie-Value-S" + i);
            response.addCookie(cookie); // 这句话 tomcat 会帮你写入到客户端,具体细节你不用管了。 这个  cookie 属于窗口/子窗口(放在内存中的)

            cookie = new Cookie("Persistent-Cookie-" + i, "Cookie-Value-P" + i);
            // Cookie is valid for an hour, regardless of whether user quits
            // browser, reboots computer, or whatever.
            cookie.setMaxAge(3600); // 给 cookie 设置一个时间,超过这个时间就消失
            response.addCookie(cookie);
        }
        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        out.println("<html><head><title>设置Cookie</title></head>" + "<BODY>\n"
                + "<H1 ALIGN=\"CENTER\">" + "设置Cookie" + "</H1>\n"
                + "6个Cookie\n" + "<A HREF=\"ShowCookies\">\n" + "查看</A>.\n"
                + "</BODY></HTML>");
    }
}
ShowCookies.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 读取客户端的Cookie

public class ShowCookies extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        String title = "Active Cookies";
        out.println("<html><head><title>获取客户端Cookie</title></head>"
                + "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1 ALIGN=\"CENTER\">"
                + title + "</H1>\n" + "<TABLE BORDER=1 ALIGN=\"CENTER\">\n"
                + "<TR BGCOLOR=\"#FFAD00\">\n" + "  <TH>Cookie Name\n"
                + "  <TH>Cookie Value");
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            Cookie cookie;
            for (int i = 0; i < cookies.length; i++) {
                cookie = cookies[i];
                out.println("<TR>\n" + "  <TD>" + cookie.getName() + "</TD>\n"
                        + "  <TD>" + cookie.getValue() + "</TD></TR>\n");
            }
        }
        out.println("</TABLE></BODY></HTML>");
    }
}


转载于:https://www.cnblogs.com/robbychan/p/3786870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值