Web学习日记4

本文介绍了Cookie和Session的概念、作用与特点,并通过一个实际的Servlet示例展示了如何使用Cookie记录用户上一次访问时间。Cookie存储在客户端,大小有限制,而Session存储在服务器端,数据更安全。总结来说,Session相比Cookie提供了更高的安全性,但Cookie在某些场景下仍有其便捷性。
摘要由CSDN通过智能技术生成

目录

​编辑

一,概念

二,Cookie作用和特点

三,Session作用和特点

四,总结

五,例子获取上一次访问时间

一,概念

会话:一次会话中包含多次请求和响应

session代表一次会话

Request代表一次请求

二,Cookie作用和特点

cookie存储在客户端浏览器

cookie大小限制4KB

一个可以发送多个cookie

三,Session作用和特点

session存在服务器端

session没有数据大小的限制

四,总结

session数据比较安全

cookie相对于不安全

五,例子获取上一次访问时间


@WebServlet( "/Cookie1Servlet")
public class Cookie1Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//准备工作
         response.setContentType("text/html;charset=utf-8");
         boolean flag=false;//cookie没有lastTime
         //1.获取所有cookies
         Cookie[] cookies=request.getCookies();
         //再一次访问
         if(cookies!=null&&cookies.length>0){
            //1.遍历cookie
             for (Cookie cookie : cookies) {
                 //2.获取cookie名字
                 String name=cookie.getName();
                 //3.判断名称是否是:lastTime
                 if("lastTime".equals(name)){
                     //有该cookie 不是第一次访问
                    //有lastTime的cookie

                     //设置cookie的value 是当前系统时间
                     Date date=new Date();
                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
                     String strDate=sdf.format(date);
                     System.out.println("编码前:"+strDate);
                     //URL编码
                     strDate= URLEncoder.encode(strDate,"utf-8");
                     System.out.println("编码后:"+strDate);
                     //4.设置cookie的value
                     cookie.setValue(strDate);//设置cookie存话时间
                     //设置cookie的存活时间
                     cookie.setMaxAge(60*60*24*30);//一个月
                    //cookie返回给客户端
                     response.addCookie(cookie);

                     //获取上一次访问时间
                     String value=cookie.getValue();
                     //URL 解码
                     value= URLDecoder.decode(value,"utf-8");
                     response.getWriter().write("<h1>欢迎你回来,你上次访问时间是"+value+"</h1>");
                     }
                 }
             }
         //没有 客户端浏览器第一次访问
        if(cookies==null ||cookies.length==0||flag==false){
             //设置cookie的value 是当前系统时间
             Date date=new Date();
             SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
             String strDate=sdf.format(date);
             System.out.println("编码前:"+strDate);
             //URL编码
             strDate= URLEncoder.encode(strDate,"utf-8");
             System.out.println("编码后:"+strDate);
             //设置cookie
             Cookie cookie=new Cookie("lastTime",strDate);
             //设置cookie的存活时间
             cookie.setMaxAge(60*60*24*30);//一个月
             //cookie返回给客户端
             response.addCookie(cookie);
             response.getWriter().write("<h1>您好,欢迎首次访问</h1>");
        }
         }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值