zoukankan      html  css  js  c++  java
  • javaweb之Cookie篇

      Cookie是在浏览器访问某个Web资源时,由Web服务器在Http响应消息头中通过Set-Cookie字段发送给浏览器的一组数据。

      一个Cookie只能表示一个信息对,这个信息对有一个信息名(Name)和一个信息值(Value)组成。Web服务器可以给一个Web浏览器发送多个Cookie,但每个Cookie的大小一般被限制为4KB。

      在Servlet API中,使用java.servlet.http.Cookie类来封装一个Cookie信息。HttpServletResponse接口中定义addCookie方法,HttpServletRequest中getCookies方法获取浏览器发送给服务器的所有Cookie信息。

      Cookie类中相关的方法:

      1.构造方法,仅此一个 

       public Cookie(java.lang.String name,java.lang.String value)
      name参数中不能包含任何空白字符,逗号,分号,并不能以$字符开头

    2.getName方法用于获取Cookie名称

    3.getValue和setValue分别用于获取和设置Cookie的值

    4.setMaxAge和getMaxAge用于设置和获取在客户端的有效时间,单位为秒,
      如果设置为0,则表示当Cookie发送到客户端浏览器时立即删除,
      如果设置为负数(-1),则表示浏览器并不会把这个Cookie保存在硬盘上,这种Cookie被称为临时Cookie(保存在硬盘上的Cookie叫做永久Cookie),
     它们(临时Cookie)只存在于当前浏览器的进程中,当浏览器关闭后,Cookie自动失效。对于IE浏览器来说,不同的浏览器窗口不能共享临时Cookie,但按Ctrl+N组合件或使用js的
    window.open打开的窗口,由于和它们的父窗口属于同一个浏览器进程,因此它们可以共享临时Cookie,而在FireFox中,所有的进程和标签页都可以共享临时Cookie。

     5.setPath和getPath用于设置和获取当前Cookie的有效Web路径。如果在创建某个Cookie时未设置它的path属性,那么该Cookie只对当前访问的Servlet所在的Web路径及其子路径 有效。如果要想使Cookie对Web站点中所有可访问的路径有效,需要将path属性设置为“/”。
      getPath()  Returns the path on the server to which the browser returns this cookie.

    6.setDomain和getDomain用于设置和获取当前Cookie的有效域。
    7.setComment和getComment用于设置和返回当前Cookie的注释部分。
    8.setVersion和getVersion用于设置和返回当前Cookie的协议版本。
    9.setSecure和getSecure用于设置和返回当前Cookie是否只能使用安全的协议安装Cookie。
      getSecure()  Returns true if the browser is sending cookies only over a secure protocol, or false if the browser can send cookies using any pr  otocol.

    使用举例:

      //设置临时Cookie
      Cookie tempcook = new Cookie("temp","123456789");
      tempcook.setMaxAge(-1);
      response.addCookie(tempcook);

      //设置MaxAge为0的Cookie
      Cookie cookie = new Cookie("cookie","6666");
      cookie.setMaxAge(0);
      response.addCookie(cookie);

      //设置永久Cookie
      String user = request.getParameter("user");
      if(user != null) {

        Cookie usercookie = new Cookie("user",user);
        usercookie.setMaxAge(48 * 3600);//秒为单位,48小时
        usercookie.setPath("/");//这个Cookie对站点内所有访问路径都有效
        response.addCookie(usercookie);
      }

    -----------------------------------------------------------------------

    //获取Cookies
    Cookie[] cookies = request.getCookies();
    for(Cookie c : cookies) {

      if("temp".equals(c.getName())) {

        out.println("临时Cookie值:"+c.getValue());
      } else if("cookie".equals(c.getName())) {

        out.println("Cookie值:"+c.getValue());
      } else if("user".equals(c.getName())) {

        out.println("永久Cookie值:"+c.getValue());
      }
    }

     
  • 相关阅读:
    python冲刺(5)列表声称式
    python冲刺(4)切片 等
    python冲刺(3)函数 等
    python冲刺(2)
    python冲刺(1)
    redis初步(1)
    php连接Oracle的时候遇到的编码集问题
    redis初步
    php 命名空间
    指向字符数组的指针与指向整型数组的指针
  • 原文地址:https://www.cnblogs.com/xingkai/p/4891064.html
Copyright © 2011-2022 走看看