javaweb cookie基本操作 以及过期时间设置无效问题解决

关于cookie设置过期无效的问题:

     经过cookie.getMaxAge()获取的值,显示出来永远是-1. 但实际的值并不是-1; 可以通过关闭浏览器测试,cookie还在; 或者设置cookie时间为10,等10秒时间之后,cookie会被删除;
     并不是网上说的要设置 path, domin; 你只要知道:你设置的是对的,不过除了key-value,其余的参数都不可读就行;


cookie的基础知识

    /**
     *  cookie 是服务器 存储数据到 浏览器 的一种技术,用于跟踪客户状态。比如证明客户身份: 是否是第一次访问,是否已经登录等
     * 
     *  cookie流程:
     *     1.客户端首次访问服务器,服务端会现在客户端存留该客户的相关信息的cookie;
     *     2.以后客户每次访问服务器时,都会在HTTP请求中包含cookie数据,服务器解析cookie,就能得到客户的信息;
     *  
     *  cookie操作:   
     *     服务器
     *            1.在HTTP响应结果中添加Cookie数据。
     *                  Cookie theCookie = new Cookie("username","Tom");
     *                  response.addCoolie( theCookie );
     *        2.解析HTTP请求中的Cookie数据。
     *              Cookie cookies[] = response.getCookies();
     *              for( int i=0; i


cookie案例代码

    代码:
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //获取HTTP请求中的所有cookies
        Cookie cookies[] = request.getCookies();
        if( cookies == null ) {

            out.println("首次访问,没有cookie");
        }else {
            for( int i=0; i

                Cookie cookie = cookies[i];
                out.println( "
Cookie name:"
+cookie.getName() ); out.println( "
Cookie value:"
+cookie.getValue() ); out.println( "
Max Age: "
+cookie.getMaxAge()+"
"
); //修改cookie if( cookie.getValue().equals("cookieValue2") ) { cookie.setValue("cookieValue-1"); } //删除cookie if( cookie.getValue().equals("cookieValue4") ) { //cookie.setPath("/");//设置成跟写入cookies一样的 cookie.setMaxAge(0); } //cookie.setMaxAge(); //cookie.setPath(request.getContextPath()); //response.addCookie(cookie); } out.println("第"+count+"访问"); } //向浏览器端编写一个cookie Cookie cookie = new Cookie( "cookieName"+count,"cookieValue"+count ); //cookie.setPath(request.getContextPath()); cookie.setMaxAge(10); response.addCookie(cookie); count++; out.println(count); //out.println(request.getContextPath()+"/"); }

Domain, Path的设置
    cookie读取与设置的基本原理:
        1. 先匹配 响应头中的设置的 domain, 一般就是域名
        2. 在匹配 path,默认为 “/应用名字/”

       1) 同一个tomcat下多个webapp共享cookie:
           此时:默认的Domain是一样的,所以不需要设置; path不一样,那么就强制设置为同一个path即可,那么久都能访问到指定的Cookie了。
        2)不同服务器下的webapp共享cookie:
          则强制指定domin路径;

—————– 已完成,暂无更新 ———————

你可能感兴趣的:(javaWeb)