目录
一、记录上一次用户访问时间1.1 需求1.2 分析1.3 代码实现1.4 实现效果图1.5 总结一、记录上一次用户访问时间
1.1 需求
(1)访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
(2)如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串。
1.2 分析
1 可以采用Cookie来完成
2 在服务器中的Servlet判断是否有一个名为lastVisit的Cookie
(1)有:不是第一次访问
响应数据:欢迎回来,您上次访问时间为:09月07日 18:41:08
将Cookie添加到respose对象中去
(2)没有:是第一次访问
响应数据:欢迎,这是您第一次访问
将Cookie添加到respose对象中去
1.3 代码实现
@WebServlet(name = "CookiePracticeServlet", value = "/cookiePractice")public class CookiePracticeServlet extends HttpServlet {private SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求编码和响应消息体的数据格式以及编码request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取cookieCookie[] cookies = request.getCookies();//表示cookie是第一次访问boolean flag = false;//遍历cookiefor (Cookie cookie : cookies) {//判断我们存的cookie名和得到的Cookie名是否一致if ("lastVisit".equals(cookie.getName())) {//表示cookie不是第一次访问flag = true;Date date = new Date();String format = sdf.format(date);//对日期进行编码format = URLEncoder.encode(format, "utf-8");cookie.setValue(format);//将cookie添加到response对象中response.addCookie(cookie);String value = cookie.getValue();//对日期进行解码value = URLDecoder.decode(value, "utf-8");response.getWriter().write("<h1>欢迎回来" + cookie.getName() + ",上次访问的时间为" + value + "</h1>");break;}}if (flag == false) {Date date = new Date();String format = sdf.format(date);//对日期进行编码format = URLEncoder.encode(format, "utf-8");//第一次则创建cookieCookie cookie = new Cookie("lastVisit", format);//将cookie添加到response对象中response.addCookie(cookie);response.getWriter().write("<h1>欢迎," + cookie.getName() + "这是您第一次访问</h1>");}}}
1.4 实现效果图
第一次访问
不是首次访问
1.5 总结
Cookie是存放在浏览器端的会话技术,实现原理是:浏览器向客户端发送
HTTP请求,服务器端接收到请求后会对请求做出响应,会在HTTP响应头里
设置set-Cookie,当下一次访问的时候会在在请求头中带上Cookie信息。本
次练习主要用到了Cookie的存值取值、以及对字符串进行编码和解码的两个
方法,有不足的地方请大家多多批评指教。
如果觉得《Cookie记录用户上次访问时间》对你有帮助,请点赞、收藏,并留下你的观点哦!