zoukankan      html  css  js  c++  java
  • cookie

    1.会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话。

    2.问题:如何在一次会话中保存会话相关的数据。

    3.Cookie:将会话相关的数据保存到浏览器中,并且在每次访问服务器时都带过去。
    3.1javax.servlet.http.Cookie,可以直接利用此类的构造方法创建一个Cookie,创建出来的Cookie需要设置一个名称和值
    3.2response身上具有addCookie的方法,可以将创建出来的组织成响应消息中的set-cookie头,通知浏览器保存该cookie
    3.3request身上具有getCookies方法,可以获取浏览器带过来的所有Cookie

    3.4Cookie方法:注意,浏览器是根据cookie的名称加上cookie的path来区分是否是同一个cookie的,如果需要覆盖之前的cookie,除了保证名称相同外还要保证path也相同。
    public Cookie(String name,String value)利用构造方法创建一个Cookie对象,在创建的时候就要指定该Cookie的名和值
    setValue与getValue方法 设置或者获取Cookie的值

    setMaxAge与getMaxAge方法 如果不设置cookie的MaxAge(或将其值设置为负值),则默认情况下浏览器会将cookie保存在浏览器的内存中,会随着浏览器关闭而消失。如果设置为一个正值,则代表该Cookie要保存的以秒为单位的时间值,如此,该cookie将会被浏览器保存到硬盘中去。如果将MaxAge设置为0,则是通知浏览器去删除该Cookie。

    setPath与getPath方法 用来指定访问哪个ULR及其子URL时带上此cookie,如果不设置此值,则浏览器默认会将发送该cookie的servlet所在的路径作为path使用。
    例如:
    setPath("/Day06")则/Day06/.../...的路径都会带上该Cookie
    如果发送该Cookie的Servlet是 /Day06/servlet/Demo1Servlet,并且未设置setPat,则浏览器在访问/Day06/servlet/..时会带上该cookie
    setDomain与getDomain方法 设置cookie对应的域名,此方法一旦调用,则浏览器会认为该cookie是一个第三方cookie而拒收
    getName方法 获取该cookie的名字,注意没有setName方法,一个Cookie一旦创建出来就不能修改名字了

    3.5浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

    实验: 利用cookie实现显示上次访问时间
    !~~利用cookie显示最近浏览的商品


    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");

    Cookie [] cs = request.getCookies();
    Cookie findC = null;
    if(cs!=null){
    for(Cookie c : cs){
    if("lastTime".equals(c.getName())){
    findC = c;
    }
    }
    }
    if(findC == null){
    response.getWriter().write("您是第一次访问本网站!");
    }else{
    Long lastTime = Long.parseLong(findC.getValue());
    response.getWriter().write("您上次访问时间是:"+new Date(lastTime).toLocaleString());
    }

    Date date = new Date();
    Cookie c = new Cookie("lastTime",date.getTime()+"");
    c.setMaxAge(3600*24*30);
    c.setPath(request.getContextPath());
    //c.setDomain(".baidu.com");
    response.addCookie(c);
    }

  • 相关阅读:
    关于Openfeint + xcode 4.2 不能编译的解决方案
    CocoaAsyncSocket
    IDEA快捷键
    在升级了ADT22之后报java.lang.NoClassDefFoundError错误
    关于Toast连点显示不及时的问题
    在使用ListFragment的setEmptyText时报java.lang.IllegalStateException: Can't be used with a custom content view错误
    推荐系统专题
    Javascript 排序(转)
    js进阶
    JavaScript之定时器性能优化
  • 原文地址:https://www.cnblogs.com/superPerfect/p/4300688.html
Copyright © 2011-2022 走看看