Cookie会话技术

一、概念:从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。

二、会话技术分为Cookie和Session:

特点:

Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie;(今日重点说cookie技术)

Session:将数据存储到服务器端,安全性相对好,增加服务器的压力(第三个域对象);

三、Cookie技术是将用户的数据存储到客户端的技术:(关键字如下)

 

public class SendCookServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建cookie对象
        Cookie cookie=new Cookie("goods","iphone12");①key和value都是字符串;② Cookie中不能存储中文
        //给cookie设置持久化时间
        cookie.setMaxAge(120);  (也可以设置成2*60)s

                  // 注意:如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里

       //设置cookie携带路径
        cookie.setPath("/WEB04/SendCookServlet");

                   // 注意:如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息

        //发送cookie对象
        response.addCookie(cookie);

//删除cookie(同名同路径的持久化时间为0的cookie进行覆盖即可)

 cookie.setPath("/WEB04");

           cookie.setMaxAge(0);
           response.addCookie(cookie);


    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

四、服务器端获取客户端cookie

public class GetcookieServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取所有cookie所在数组
        Cookie[] cookies = request.getCookies();
        for(Cookie cookie:cookies){                     //增强for遍历
            if(cookie.getName().equals("goods")){
                System.out.println(cookie.getValue());
            }
        }
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

五、记录服务器获取客户端浏览时间

public class AccessTimeservlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //记录当前系统时间发送给客户端
        //创建当前时间
        Date date=new Date();
        //创建日期格式转化类对象
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time=sdf.format(date);
        //创建cookie对象
        Cookie Cookie=new Cookie("lastAccessTime", time);
        //设置持久化时间
        Cookie.setMaxAge(180);
        //发送cookie
        response.addCookie(Cookie);
        //获取客户所携带的cookie信息
        String lastAccessTime=null;
        Cookie[] cookies = request.getCookies();
        if(cookies!=null){
            for(Cookie c:cookies){
                if(c.getName().equals("lastAccessTime")){
                    lastAccessTime=c.getValue();
                }
            }
        }
        //解决乱码
        response.setContentType("text/html;charset=utf-8");
        if(lastAccessTime==null){
            response.getWriter().write("你是第一次访问");
        }else{
            response.getWriter().write("你上次访问时间"+lastAccessTime);
        }
        
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

 

 

 

 

 

 欢迎给位大神指点和评论;

 

posted @ 2020-05-15 14:21  丿狂奔的蜗牛  阅读(156)  评论(0编辑  收藏  举报