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例子一:登录
-
判断账号是否正确
-
如果正确,则获取cookie。 但是得到的cookie是一个数组, 我们要从数组里面找到我们想要的对象。
-
如果找到的对象为空,表明是第一次登录。那么要添加cookie
-
如果找到的对象不为空, 表明不是第一次登录。
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、表达式:用于输出表达式的值到浏览器,<%=表达式 %> 在表达式中不能加分号(;)