zoukankan      html  css  js  c++  java
  • Cookie

    1.会话控制
    > Http协议
    Http协议两个缺陷:
    1.HTTP协议是纯文本的
    2.HTTP协议是无状态的
    服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户
    虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。
     
    [1] Cookie
    > 看电影
    - 去电影院看电影时,检票人员是认票不认人。
    - 电影院的运作流程
    1.印刷电影票
    2.将票发给看电影
    3.看电影的拿着票来看电影
    4.检票
     
    > 简介
    - 我们想可以通过服务器向浏览器发送一个类似票的东西,
    浏览器在访问服务器时就可以拿着票来访问
    服务器就可以根据这个票来识别不同的用户。
     
    - 服务器发送给浏览器的这张票我们称为Cookie。
    - Cookie的使用流程:
    1.服务器先要创建Cookie
    2.将Cookie发送给浏览器
    3.浏览器带着Cookie访问服务器
    4.服务器检查浏览器的Cookie
     
    - Cookie实际上就是一个头
    服务器通过响应头将Cookie发送给浏览器,
    浏览器通过请求头将Cookie发回给服务器,
    服务器可以根据不同的Cookie来识别不同的用户。
     
    > 使用Cookie
    - Cookie cookie = new Cookie(name,value);
    - response.addCookie(cookie);
    注意:可以发送多个cookie!
    Cookie cookie1=new Cookie("key1", "zhang");
     Cookie cookie2=new Cookie("key2", "li");
     response.addCookie(cookie1);
     response.addCookie(cookie2);
    

      request.getCookies(); 返回的是一个Cookie数组。

    - 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。
    //Cookie的遍历与取值、改值
     Cookie [] cookies =request.getCookies();
     
     for (Cookie cookie : cookies) {         //for循环遍历
     if ("username".equals(cookie.getName())) {  //通过getName取值
     cookie.setValue("lisi");      //通过setValue改值
     response.addCookie(cookie);
     }
     
     }
    
    - 修改Cookie
    一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie,
    但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改
     > Cookie的有效时间
    - Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。
    - 通过setMaxAge(秒数)来设置Cookie的有效时间
    -//当秒数大于0时,有效时间会设置为相应的秒数
    cookie.setMaxAge(30);
    cookie.setMaxAge(0);
    - 设置一个长久有效的Cookie
    cookie.setMaxAge(60*60*24*365*10)
     
    - 在程序中使Cookie立即失效
    - 可以使用一个同名的,立即失效的Cookie来替换已有Cookie
     Cookie cookie1=new Cookie("key1", "zhang");
     Cookie cookie2=new Cookie("key2", "li");
     cookie1.setMaxAge(0);
     response.addCookie(cookie1);
     response.addCookie(cookie2);
    
    在第二次访问时,请求头中 没有cookie1的信息
     
    > Cookie的Path
    - path指的Cookie的路径()
    - 所谓的Cookie路径就是指, - Cookie
     
    访问/WebCookie/1.js (在不设置cookie路径 ,访问同一项目的其他页面也会带着Cookie信息)
     
    - 通过setPath()方法来设置Cookie有效路径
    //修改Cookie的有效路径
    //Cookie的路径由浏览器解析,所以设置路径时需要加上项目名
    cookie.setPath(request.getContextPath()+"/hello");
    Cookie cookie1=new Cookie("key1", "zhang");
     Cookie cookie2=new Cookie("key2", "li");
     
     cookie1.setMaxAge(0);
     cookie2.setPath(request.getContextPath()+"/1.jsp");
     response.addCookie(cookie1);
     response.addCookie(cookie2);
    
    访问1.jsp的页面带cookie信息
    index.jsp 的请求不带cookie信息
     
    > 应用:
    1.可以用来保持用户的登录状态
    2.可以用来记录用户上次输入的用户名
    3.广告的推送
     
    > Cookie练习
    > 模拟一个taobao的功能,保存用户输入用户名。
    > 用户在login.jsp输入用户名和密码
    > 请求发送个LoginServlet
    > LoginServlet收到请求行,检查用户名和密码是否正确。(默认登录成功)
    如果正确,则将用户名保存到一个Cookie中,并发送给浏览器 ,重定向到login-success.jsp
    如果错误,转发到login.jsp
     
    //Jsp
    <form action="${pageContext.request.contextPath}/cookie" method="get">
     用户名:<input type="text" name="username" value=${cookie.value}><br>
     密码: <input type="password" name="pwd" ><br>
     <input type="submit" value="登录">
     
    </form>
    
    //servlet中
    Cookie cookie=new Cookie("username", "zhangsan");
     response.addCookie(cookie);
     String username = request.getParameter("username");
     String pwd = request.getParameter("pwd");
     if (username.equals(cookie.getValue())) {
     response.sendRedirect(request.getContextPath()+"/1.jsp");
     }
     }
    

     只是简单的模仿一下,只是用于记录这个知识点。

     
     
     
  • 相关阅读:
    原创: How to build a query based on Definition Updates installed
    About SCCM 2012 UDA(User Device Affinity)
    《失业的程序员》(二十):中国式的二把手
    《失业的程序员》(十九):工作与感情之间的传球 .
    《失业的程序员》(十八):意外的项目之旅 .
    《失业的程序员》(十七):保姆式的服务
    《失业的程序员》(十六):技术和商务的结合
    《失业的程序员》(十五):商业头脑
    《失业的程序员》(十四):兄和弟,矛和盾
    《失业的程序员》(十三):平衡
  • 原文地址:https://www.cnblogs.com/Actexpler-S/p/7359630.html
Copyright © 2011-2022 走看看