JavaWeb ——servlet学习5之cookie

JavaWeb ——servlet学习5之cookie

Cookies的使用

// 将Cookie传递给浏览器
Cookie cookie = new Cookie("aa", "bb");
//给响应,添加一个cookie
response.addCookie(cookie);
 
// 从浏览器中获取cookie
Cookie[] cookies = request.getCookies();
  if(cookies != null){
  for (Cookie c : cookies) {
    String cookieName = c.getName();
    String cookieValue = c.getValue();
    System.out.println(cookieName + " = "+ cookieValue);
  }
}

常用方法

// 获取cookie, 添加cookie
request.getCookie();
response.addCookie();

// cookie的时效性:
// 设置cookie的时效性,单位为s。 默认为浏览器关闭结束
cookie.setMaxAge(60 * 60 * 24 * 7); 

// 赋值新的值
cookie.setValue(newValue);

//用于指定只有请求了指定的域名,才会带上该cookie
cookie.setDomain(".itheima.com");

//只有访问该域名下的cookieDemo的这个路径地址才会带cookie
cookie.setPath("/CookieDemo");

Cookie例子一:登录

  1. 判断账号是否正确

  2. 如果正确,则获取cookie。 但是得到的cookie是一个数组, 我们要从数组里面找到我们想要的对象。

  3. 如果找到的对象为空,表明是第一次登录。那么要添加cookie

  4. 如果找到的对象不为空, 表明不是第一次登录。

if("admin".equals(userName) && "123".equals(password)){
  //获取cookie last-name --- >
  Cookie [] cookies = request.getCookies();

  //从数组里面找出我们想要的cookie
  Cookie cookie = CookieUtil.findCookie(cookies, "last");

  //是第一次登录,没有cookie
  if(cookie == null){

    Cookie c = new Cookie("last", System.currentTimeMillis()+"");
    c.setMaxAge(60*60); //一个小时
    response.addCookie(c);

    response.getWriter().write("欢迎您, "+userName);

  }else{
    //1. 去以前的cookie第二次登录,有cookie
    long lastVisitTime = Long.parseLong(cookie.getValue());

    //2. 输出到界面,
    response.getWriter().write("欢迎您, "+userName +",上次来访时间是:"+new Date(lastVisitTime));

    //3. 重置登录的时间
    cookie.setValue(System.currentTimeMillis()+"");
    response.addCookie(cookie);
  }
}else{
  response.getWriter().write("登陆失败 ");
}

注意事项

由于Cookie会保存在客户端上,所以有安全隐患问题。 还有一个问题, Cookie的大小与个数有限制(每个web工程最多20个cookie,一共支持300个,每个cookie的大小<4kb)。 为了解决这个问题 ---> Session .

 

JSP中嵌入java代码的三种方式:

1、声明变量或方法 : <%! 声明; %> :慎重使用,因为此方法定义的是全局变量

2、java片段(scriptlet): <% java代码; %>

3、表达式:用于输出表达式的值到浏览器,<%=表达式 %> 在表达式中不能加分号(;)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值