zoukankan      html  css  js  c++  java
  • cookie和session

    1)介绍

    cookie是由 服务器端生成,通过response写回浏览器,保留在浏览器中。

    下一次访问,浏览器会根据不同的规则,携带不同的cookie(通过request)我们服务器可以接收cookie。

    cookie API:

    Cookie  new cookie(String key,String val)

    response.addCookie(cookie)

    Cookie[] cookies=request.getCookies()

     1     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     2         Cookie cookie=new Cookie("A","12233");
     3         //获取cookie 所有的cookie,返回追是数组形式。
     4         Cookie[] cookies=request.getCookies();
     5         for(Cookie ck:cookies){
     6             //获取cookie的value
     7             System.out.println(ck.getValue());
     8             //获取cookie的key
     9             System.out.println(ck.getName());
    10         }
    11         //获取指定的cookie
    12             
    13         //写回cookie
    14         response.addCookie(cookie);
    15 
    16     }

     2)案例:访问网站记录用户访问时间。

    分析:1、创建一个servlet 接收请求。

         2、从request 获取对应的cookie。

       3、获取上次登录的cookie并打印,判断该值是否为空,如果为空则表示第一次登录。并输出。

       4、记录当前登录的时间并更新cookie里的值。

    代码:

     1 package jd.com.cookie_rem;
     2 
     3 import javax.servlet.ServletException;
     4 import javax.servlet.annotation.WebServlet;
     5 import javax.servlet.http.Cookie;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 import java.io.IOException;
    10 import java.text.DateFormat;
    11 import java.text.SimpleDateFormat;
    12 import java.util.Date;
    13 
    14 @WebServlet(name = "Servlet_Rem")
    15 public class Servlet_Rem extends HttpServlet {
    16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    17 
    18     }
    19 
    20     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    21         //0)设置编码。
    22         response.setContentType("text/html;charset=utf-8");
    23         //1)获取cookie 和)输出cookie
    24         Cookie[] cookies=request.getCookies();
    25         String c=getCookiebyName("lastime",cookies);
    26         if(c==null){
    27             response.getWriter().print("the first  time accesss the  website!");
    28         }else{
    29             Long da_l=Long.parseLong(c);
    30             SimpleDateFormat date=new SimpleDateFormat();
    31             String data_str=date.format(da_l);
    32             response.getWriter().print(" the last time of accessing website is:"+" "+data_str);
    33         }
    34         //3)记录当前访问时间。
    35         Long  data=new Date().getTime();
    36         Cookie new_rec=new Cookie("lastime",data.toString());
    37         response.addCookie(new_rec);
    38     }
    39      private  String getCookiebyName(String name,Cookie[] cookies){
    40         String flag=null;
    41         if(cookies!=null){
    42             for(Cookie cookie:cookies){
    43                 if (cookie.getName().equals(name)){
    44                     flag=cookie.getValue();
    45                 }
    46             }
    47         }
    48         return flag;
    49 
    50     }
    51 }

     上面设置的cookie,如果浏览器断开,再次访问的时候,相应的cookie也没有了。

    3)cookie的持久化:

    setMaxAge(int second)设置cookie过期时间,单位是秒。

     在设置中:

    4)设置cookie路径,以"/"开始 以"/"结束。为特定的url设定cookie。

    setPath();
    new_rec.setPath("/rem"+"/");

     4)session

    是服务端生成,浏览器在通过方法:通过HttpServletRequest(request)获取session对象,getsession()方法获取,因为session是域对象,所以可以通过xxxAttribute()方法获取。对应的session值。

    通过invalidate()  设置成session过期。

    浏览器从session获取对应的session值,如果有,给浏览器返回Jsessionid,如果没有,则服务器创建,并返回对应的Jsessionid.

    
    
    
  • 相关阅读:
    dynamic debug动态打印
    leetcode:Pascal's Triangle II (杨辉三角形,空间限制)【面试算法题】
    HDU 1671 Phone List 二叉树水题 数组建树法
    栈和队列
    一张图理解O(1)算法
    uva 10608
    C# 写的工作任务 Job 定时调度框架 WebWork (Quartz.NET) Web版的Windows服务
    PHP伪造referer突破防盗链
    php 文件上传一例简单代码
    PHP 图片文件上传代码
  • 原文地址:https://www.cnblogs.com/evilliu/p/8596442.html
Copyright © 2011-2022 走看看