zoukankan      html  css  js  c++  java
  • Servlet Cookie

    // 文件路径 D:ApacheServerweb_javaHelloWorldsrccom	estTestServletCookie.java
    package com.test;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class TestServletCookie {
    
        public void testfun(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置返回响应内容类型及编码,否则返回输出中文会乱码
            response.setContentType("text/html;charset=UTF-8");
            // Servlet Cookie 处理需要对中文进行编码与解码,方法如下
            String enStr = java.net.URLEncoder.encode("测试中文", "UTF-8"); // 编码
            String deStr = java.net.URLDecoder.decode(enStr, "UTF-8"); // 解码
            
            // 创建新 cookie 对象 并赋键值对,键值即该 cookie 名称,这里值赋中文值,需要先编码
            Cookie cookie = new Cookie("testKey",enStr);
            // 设置 cookie 适用的域名,例如 runoob.com,这里是 localhost(不用加:8080端口号)
            cookie.setDomain("localhost");
            // 获取 cookie 适用的域,例如 runoob.com
            cookie.getDomain();
            // 设置 cookie 过期的时间(以传给客户端为起始,以秒为单位)。如果不设置,cookie 只会在当前 session 会话中持续有效。或者cookie.setMaxAge(0) 即表示删除这个cookie
            cookie.setMaxAge(3600 * 24);
            // 返回 cookie 的最大生存周期(以秒为单位),默认情况下,-1 表示 cookie 将持续下去,直到浏览器关闭。
            cookie.getMaxAge();
            // 返回 cookie 的名称。名称在创建后不能改变。
            cookie.getName();
            // 设置 cookie 的值,除了创建 cookie 对象时赋值,setValue() 方法也可赋值。赋的值非中文就不用转码了
            cookie.setValue("newTestVal");
            // 获取 cookie 的值
            cookie.getValue();
            // 设置 cookie 适用的路径uri。浏览器在发该 cookie 消息给服务器之前,请求的 url 中必须存在一个指定 uri 路径。这个比较是通过将 path 属性值与请求的 url 从头开始逐字符串比较完成的。如果字符匹配,则发送该 cookie 消息。如果不指定路径,与当前页面相同目录(uri)下的(包括子目录下的)所有 url 浏览器都会返回 cookie。
            cookie.setPath("/HelloWorld/TomcatTest/TestServlet");// 此时浏览器完整访问路径为 http://localhost:8080/HelloWorld/TomcatTest/TestServlet
            // 获取 cookie 适用的路径uri。
            cookie.getPath();
            // 设置布尔值,表示 cookie 是否应该只在加密的(即 SSL)连接上发送。
            cookie.setSecure(false);
            // 设置该 cookie 在浏览器中不能通过 Javascript 的 document.cookie 属性访问
            cookie.setHttpOnly(true);
            // 设置cookie的注释。该注释在浏览器向用户呈现 cookie 时非常有用。
            cookie.setComment("testNotes");
            // 获取 cookie 的注释,如果 cookie 没有注释则返回 null。
            cookie.getComment();
            
            // 输出 cookie值,中文的话需要解码
            response.getWriter().append("<br/>创建并发送给浏览器的 cookie : testKey 值为 : " + java.net.URLDecoder.decode(cookie.getValue(), "UTF-8"));
            
            // 发送 Cookie 到 HTTP 响应头,即将 cookie 传到浏览器
            response.addCookie(cookie);
            
            
            // 获取览器发送的与当前页面 url 相关的 Cookie 的数组
            Cookie request_cookie[] = request.getCookies();
            if( request_cookie != null ){
                // 遍历获取每一个浏览器发送的 cookie
                for (int i = 0; i < request_cookie.length; i++){
                    cookie = request_cookie[i];
                    // 对比找到指定名称的 cookie
                    if((cookie.getName( )).compareTo("delCookieName") == 0 ){
                        // 然后删除
                        cookie.setMaxAge(0);
                        response.addCookie(cookie);
                    }else {
                        response.getWriter().append("<br/>浏览器上传 cookie 名称 : " + cookie.getName() + " 值为 : " + cookie.getValue());
                    }
                }
            }else{
                response.getWriter().append("<br/>No Cookie founds");
            }
        }
    }
  • 相关阅读:
    [原创]SQL经验
    DotNetBar技巧经验集合
    正则表达式的那些小角落
    [转]验证数字的正则表达式集
    项目受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何更改
    DateGridView的一些技巧
    个人的CodeSmith和.NetTiers的学习心得及经验总结
    常用代码
    mysql 数据库常用命令
    XP2防火墙拒绝网上邻居访问的解决
  • 原文地址:https://www.cnblogs.com/dreamhome/p/11486596.html
Copyright © 2011-2022 走看看