[会话技术1]-Cookie

会话技术之Cookie技术

1.Cookie的创建
1)使用原生的Http响应头的方式设置Cookie
// 设置 Cookie
response .addHeader( "Set-Cookie" , "name=dream" );
response .addHeader( "Set-Cookie" , "next=12" );
//获取 Cookie
Cookie[] cookies = request .getCookies();
if ( cookies != null ) {
    for (Cookie cookie : cookies ) {
        response .getWriter().write( cookie .getName() + "====" + cookie .getValue());
    }
}

2)使用Java EE封装的Cookie对象
Cookie cookie = new Cookie( "lastTime" , new Date().getTime() + "" );

2.Cookie的访问控制
// Cookie 的访问控制
//1.控制Cookie的到期时间
cookie .setMaxAge(60 * 60 * 24 * 30); // 设置Cookie 到期时间为 30 天后 (MaxAge接受一个秒值)
//2.控制 Cookie 的访问路径 --- 访问那些站点需要携带该Cookie
cookie .setPath( request .getContextPath() + "/CookieTest02" );
//3.指定描述cookie用途的注释。
cookie .setComment( "use display last time." );
//4.指示浏览器是否只应使用安全协议(如HTTPS或SSL)发送Cookie。
cookie .setSecure( false ); // 如果设置为 True, 则普通的HTTP请求将不会携带该 Cookie

3.添加 Cookie
// 添加 Cookie
response .addCookie( cookie );
response .addCookie( num );

Note:
向response添加Cookie时报 IllegalArgumentException错误需要将其中包含的空格、逗号等替换或者转义.

4.读取 Cookie
Cookie lastTime = null ;
Cookie[] cookies = request .getCookies();
if ( cookies != null ) { // Cookie 不一定存在, 如果不存在cookies 就为 null, 对null进行增强for循环会出错
    for (Cookie c : cookies ) {
        if ( "lastTime" .equals( c .getName())) {
            lastTime = c ;
            break ;
        }
    }
}

if ( lastTime != null ) { // 找到所需要的 Cookie
    response .getWriter().write( "您上次的访问时间是:" + new Date(Long. parseLong ( lastTime .getValue())));
}

5. 项目练习
写两个Servlet, 一个用以读取所有Item并显示到页面, 另一个用以显示每一个Item的detail,并发送Cookie以达到在第一个页面上不仅显示所有Item还可以显示3个用户浏览的记录。

Demo地址: DownLoad后进入v2/Day05-JSP-Conversation

你可能感兴趣的:(Java)