zoukankan      html  css  js  c++  java
  • JavaWeb案例:上次访问时间 Cookie技术

     1 package cn.itcast.access;
     2 
     3 import javax.servlet.ServletException;
     4 import javax.servlet.annotation.WebServlet;
     5 import javax.servlet.http.Cookie;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 import java.io.IOException;
    10 import java.text.SimpleDateFormat;
    11 import java.util.Date;
    12 
    13 @WebServlet("/lastTime")
    14 public class LastTimeServlet extends HttpServlet {
    15     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    16         /*
    17         案例需求:
    18         1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
    19         2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串
    20 
    21         1.用户访问Servlet资源
    22         2.从记忆中获取访问时间
    23             Servlet中getCookies()
    24             判断是否为null
    25                 判断是否存在lastTime
    26                     存在,则获取用户时间,并将当前时间存入,显示上次访问
    27 
    28             用户是第1次访问,显式首次访问
    29 
    30         如果没有,说明第1次访问,则提示:您好,欢迎您首次访问。
    31         如果有,则提示:欢迎回来,您上次访问时间为:显示时间字符串
    32          */
    33 
    34         //编码
    35 
    36         response.setContentType("text/html;charset=utf-8");
    37         //从记忆中获取访问时间
    38         Cookie[] cookies = request.getCookies();
    39         if(cookies != null){
    40             //判断是否存在lastTime
    41             for (Cookie cookie : cookies)
    42                 if (cookie.getName().equals("lastTime")) {
    43                     String lastTimeMillisStr = cookie.getValue();
    44                     //存入当前时间
    45                     Cookie currentTime = new Cookie("lastTime", String.valueOf(System.currentTimeMillis()));
    46                     //保存1天
    47 //                    currentTime.setMaxAge(60 * 60 * 24);
    48                     response.addCookie(currentTime);
    49 
    50                     //用户已经访问,输出上次访问
    51                     Date lastTimeDate = new Date();
    52                     lastTimeDate.setTime(Long.parseLong(lastTimeMillisStr));
    53 
    54                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
    55                     String lastTimeStr = sdf.format(lastTimeDate);
    56                     response.getWriter().write("欢迎回来,您上次访问时间为:" + lastTimeStr);
    57 
    58                     return;
    59                 }
    60         }
    61 
    62         //首次访问
    63         //存入当前时间
    64         Cookie currentTime = new Cookie("lastTime", String.valueOf(System.currentTimeMillis()));
    65         //保存1天
    66 //        currentTime.setMaxAge(60 * 60 * 24);
    67         response.addCookie(currentTime);
    68 
    69         response.getWriter().write("您好,欢迎您首次访问。");
    70     }
    71 
    72     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    73         doPost(request, response);
    74     }
    75 }
    版本1 直接就写
     1 package cn.itcast.access;
     2 
     3 import javax.servlet.ServletException;
     4 import javax.servlet.annotation.WebServlet;
     5 import javax.servlet.http.Cookie;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 import java.io.IOException;
    10 import java.text.SimpleDateFormat;
    11 import java.util.Date;
    12 
    13 @WebServlet("/lastTime2")
    14 public class LastTimeServlet2 extends HttpServlet {
    15     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    16         /*
    17         案例需求:
    18         1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
    19         2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串
    20 
    21 
    22         1.用户访问Servlet资源
    23         2.从记忆中获取访问时间
    24             Servlet中getCookies()
    25             判断是否为null
    26                 判断是否存在lastTime
    27                     存在,则获取用户时间,并将当前时间存入,显示上次访问
    28 
    29             用户是第1次访问,显式首次访问
    30 
    31         如果没有,说明第1次访问,则提示:您好,欢迎您首次访问。
    32         如果有,则提示:欢迎回来,您上次访问时间为:显示时间字符串
    33          */
    34 
    35         //编码
    36         response.setContentType("text/html;charset=utf-8");
    37 
    38         //1.存入访问时间(毫秒值形式)
    39         Cookie currentTime = new Cookie("lastTime", String.valueOf(System.currentTimeMillis()));
    40 //        currentTime.setMaxAge(60 * 60 * 24);
    41         response.addCookie(currentTime);
    42 
    43         //2.从记忆中获取上次访问时间
    44         Cookie lastTimeCookie = null;
    45         Cookie[] cookies = request.getCookies();
    46         if(cookies != null){
    47             //判断是否存在lastTime
    48             for (Cookie cookie : cookies)
    49                 if (cookie.getName().equals("lastTime")) {
    50                     lastTimeCookie = cookie;
    51                     break;
    52                 }
    53         }
    54 
    55         //3.判断lastTimeCookie是否存在
    56         if(lastTimeCookie != null){
    57             //是,上次访问
    58             Date lastTimeDate = new Date();
    59             lastTimeDate.setTime(Long.parseLong(lastTimeCookie.getValue()));
    60 
    61             SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
    62             String lastTimeStr = sdf.format(lastTimeDate);
    63             response.getWriter().write("欢迎回来,您上次访问时间为:" + lastTimeStr);
    64         }else{
    65             //否,首次访问
    66             response.getWriter().write("您好,欢迎您首次访问。");
    67         }
    68 
    69     }
    70 
    71     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    72         doPost(request, response);
    73     }
    74 }
    版本2 使用毫秒值
     1 package cn.itcast.access;
     2 
     3 import javax.servlet.ServletException;
     4 import javax.servlet.annotation.WebServlet;
     5 import javax.servlet.http.Cookie;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 import java.io.IOException;
    10 import java.net.URLDecoder;
    11 import java.net.URLEncoder;
    12 import java.text.SimpleDateFormat;
    13 import java.util.Date;
    14 
    15 @WebServlet("/lastTime3")
    16 public class LastTimeServlet3 extends HttpServlet {
    17     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    18         /*
    19         案例需求:
    20         1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
    21         2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串
    22 
    23 
    24         1.用户访问Servlet资源
    25         2.从记忆中获取访问时间
    26             Servlet中getCookies()
    27             判断是否为null
    28                 判断是否存在lastTime
    29                     存在,则获取用户时间,并将当前时间存入,显示上次访问
    30 
    31             用户是第1次访问,显式首次访问
    32 
    33         如果没有,说明第1次访问,则提示:您好,欢迎您首次访问。
    34         如果有,则提示:欢迎回来,您上次访问时间为:显示时间字符串
    35          */
    36 
    37         //编码
    38         response.setContentType("text/html;charset=utf-8");
    39 
    40         //1.存入访问时间(日期字符串形式)
    41 
    42         //获取当前日期字符串
    43         Date currentDate = new Date();
    44         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
    45 
    46         //将当前日期字符串,存入cookie
    47         Cookie currentTime = new Cookie("lastTime", URLEncoder.encode(sdf.format(currentDate), "UTF-8"));
    48 //        currentTime.setMaxAge(60 * 60 * 24);
    49         response.addCookie(currentTime);
    50 
    51         //2.从记忆中获取上次访问时间
    52         Cookie lastTimeCookie = null;
    53         Cookie[] cookies = request.getCookies();
    54         if(cookies != null){
    55             //判断是否存在lastTime
    56             for (Cookie cookie : cookies)
    57                 if (cookie.getName().equals("lastTime")) {
    58                     lastTimeCookie = cookie;
    59                     break;
    60                 }
    61         }
    62 
    63         //3.判断lastTimeCookie是否存在
    64         if(lastTimeCookie != null){
    65             //是,上次访问
    66             response.getWriter().write("欢迎回来,您上次访问时间为:" + URLDecoder.decode(lastTimeCookie.getValue(),"UTF-8"));
    67         }else{
    68             //否,首次访问
    69             response.getWriter().write("您好,欢迎您首次访问。");
    70         }
    71 
    72     }
    73 
    74     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    75         doPost(request, response);
    76     }
    77 }
    版本3 使用日期字符串

    030_会话技术

    1)什么是会话?
    名词解释:会话描述的是通信双方之间一次交流过程。
    特点:某个时刻对之前的会话内容都有记忆,可以基于这些记忆进行交流。

    2)什么是web会话?
    web会话:浏览器和服务器之间的交互过程,包含多次请求和响应。

    3)会话技术:Cookie和Session
    为会话存储数据的技术。Cookie把数据存储在客户端,Sessionba把数据存储在服务器。

    核心:
    即对数据跨请求的记忆和基于这些记忆的操作。
    对数据跨请求存储和基于数据的操作。

  • 相关阅读:
    win7下php7.1运行getenv('REMOTE_ADDR')fastcgi停止运行
    Laravel 单设备登录
    CGI与FastCGI
    一起谈.NET技术,c#数据库存取图片的三种方式 狼人:
    一起谈.NET技术,ASP.NET的状态管理 狼人:
    一起谈.NET技术,Visual Studio 2010层架构验证的实现 狼人:
    一起谈.NET技术,4.0中的并行计算和多线程详解(二) 狼人:
    一起谈.NET技术,利用Visual Studio 2010流程模板实现Scrum敏捷开发 狼人:
    一起谈.NET技术,ASP.NET 安全漏洞临时解决方案 狼人:
    一起谈.NET技术,初识Silverlight 4及其架构 狼人:
  • 原文地址:https://www.cnblogs.com/mozq/p/10833057.html
Copyright © 2011-2022 走看看