实现效果:
Cookie概念
对Cookie的理解:直面意思是饼干点心的意思,但在计算机网络层面上看,完全是不一样的概念,Cookie是一项可以保存 访问服务器的某一用户的信息的技术 Cookie的内容:
Cookie原理
首先我们要知晓的知识点是:Cookie数组是存在于发送请求的Web页面中的,而Cookie数组里面的Cookie是第一次服务器给出响应时,新创建的并发送给浏览器的 (通俗来说就是 你到一家店去做美容,你刚好是新用户,店老板说办个会员吧,方便下次消费 同时这张会员卡也是你带回家的;于是等到下次你再去这家店消费的时候,你拿出了你的会员卡,这时候老板知道了你原来是上次办卡的那个人,这时候就会给你一定的折扣优惠)你就是发送请求的浏览器,老板就是给你响应的服务器,会员卡就是存储着用户信息的Cookie,同时会员卡Cookie是由你自己保存的(浏览器中)
我们通过遍历发送请求的web页面的Cookie数组,去查看当前用户是否已经访问过了服务器,已访问就提示”欢迎回来,上次登录时间是XX年XX月XX日,并修改当前用户的Cookie信息(用户名,用户访问的当前时间)未访问就提示”欢迎首次登录“,并将当前用户的信息加入到Cookie数组中(用户名,当前访问的时间)流程图如下:
代码实现
上代码:
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestCookiesServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
Cookie[] cookies = req.getCookies();
boolean flag=false;
if(cookies.length>0 && cookies!=null) {
for (int i = 0; i < cookies.length; i++) {
if ("root".equals(cookies[i].getName())) {
flag = true;
String value = cookies[i].getValue();
System.out.println("解码前:"+value);
value = URLDecoder.decode(value, "utf-8");
System.out.println("解码后"+value);
resp.getWriter().println("欢迎回来,上次访问时间是" + value);
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String str = simpleDateFormat.format(date);
str=URLEncoder.encode(str, "utf-8");
cookies[i].setValue(str);
cookies[i].setMaxAge(60 * 60 * 24);
resp.addCookie(cookies[i]);
break;
}
}
}
if(flag==false||cookies.length==0||cookies==null){
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String str = simpleDateFormat.format(date);
str=URLEncoder.encode(str, "utf-8");
Cookie cookie=new Cookie("root",str);
cookie.setMaxAge(60 * 60 * 24);
resp.addCookie(cookie);
resp.getWriter().println("欢迎首次访问");
}
}
}
|