您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

详细介绍Jsp中的Cookies

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 05:47 点击:
 在开发网站应用程序的过程中,使用cookie记录用户的一些信息是比较常用的一种方法,而cookie的使用也非常简单。
    一、Cookie是通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头中的
    例如:
    Cookie userCookie = new Cookie("user", "admin");
    response.addCookie(userCookie);
    和设置有关系的还有以下两个重要方法
    1.setMaxAge
    设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,而且这些Cookie不会保存到磁盘上。
    注意:删除cookie就是通过该方法实现的。将要删除的cookie的过期之前的时间指定为0就可以达到删除该cookie的目的。
    2.setPath
    设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面(jsp(SUN企业级应用的首选)页面或者Servlet的映射)所在目录及其子目录下的所有页面。
    注意:
    A:所有的cookie都是有路径的
    B:该方法设置的路径为客户端路径,即“/”代表服务器根目录,而不是WEB应用根目录
    C:该方法设置路径时,“/myWeb/”与“/myWeb”是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而后者则不可以。
    D:该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath(“/myWeb/”),该cookie都将关联到服务器的myWeb目录下(setPath(“/myWeb”)则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath(“myWeb/”)和setPath(“myWeb”)也不能关联到当前目录的myWeb的子目录下。
    这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)
    目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp(SUN企业级应用的首选)和getcookie.jsp(SUN企业级应用的首选)、在web2下有getcookie.jsp(SUN企业级应用的首选)
    web1下的setcookie.jsp(SUN企业级应用的首选)
    <%
    Cookie userCookie = new Cookie("user", "admin");
    userCookie.setMaxAge(24*60*60);
    userCookie.setPath("/web2/");
    response.addCookie(userCookie);
    %> web1下的getcookie.jsp(SUN企业级应用的首选)
    <%
    Cookie[] cookie = request.getCookies();
    String user = new String();
    if ( cookie != null )
    {  for (int i = 0; i < cookie.length; i++)
    {  Cookie myCookie = cookie[i];
    if (myCookie.getName()。equals("user"))
    {  user = myCookie.getValue();
    }
    }
    }
    out.println("user = " + user);
    %>  web2下的getcookie.jsp(SUN企业级应用的首选)
    <%  Cookie[] cookie = request.getCookies();
    String user = new String();
    if ( cookie != null )
    {  for (int i = 0; i < cookie.length; i++)
    {  Cookie myCookie = cookie[i];
    if (myCookie.getName()。equals("user"))
    {  user = myCookie.getValue();
    }
    }
    }
    out.println("user = " + user);
    %>
[nextpage]
    先访问web1下的setcookie.jsp(SUN企业级应用的首选),然后分别访问web1和web2下面的getcookie.jsp(SUN企业级应用的首选)文件,你会发现奇怪的现象,web1下的getcookie.jsp(SUN企业级应用的首选)中user为空而web2下的getcookie.jsp(SUN企业级应用的首选)中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
    大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)
 &n

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • JSP与Servlet
      • 自己动手写MiniBBS系列(基本篇)之用户登录
      • JSP取当前日期
      • JDBC 入门(一)
      • 打开一个jsp页面默认查询所有数据,调用action
      • 使用JSP标签库验证用户的输入(2)完
      • 自定义JSP标签(tag)浅议
      • WIN98/2000下的jsp服务器
      • JSP内建对象(二)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1