• 利用cookie技术制作简单的上次登录时间记录


    Cookie技术:

    1.创建cookie:

      Cookie cookie = new Cookie(String cookieName,String cookieValue);

    示例:

      Cookie cookie = new Cookie("username","zhangsan");

    那么该cookie会以响应头的形式发送给客户端:

      Set-Cookie:“name=zhangsan” 

    注意:Cookie中不能存储中文

    2.

    设置Cookie在客户端的持久化时间:

      cookie.setMaxAge(int seconds); ---时间秒

    注意:如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里

    示例:

      cookie.setMaxAge(10*60);

    设置cookie信息在浏览器的磁盘文件中存储的时间是10分钟,过期浏览器 自动删除该cookie信息

    3.设置Cookie的携带路径:

      cookie.setPath(String path);

    注意:如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息

    示例:

       cookie.setPath("/WEB16");

    代表访问WEB16应用中的任何资源都携带cookie

      cookie.setPath("/WEB16/cookieServlet");

    代表访问WEB16中的cookieServlet时才携带cookie信息

    4.向客户端发送cookie:

    response.addCookie(Cookie cookie);

    5.删除客户端的cookie:

    如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时间为0cookie进行覆盖即可

     

    1.服务器端怎么接受客户端携带的Cookie

    cookie信息是以请求头的方式发送到服务器端的:

    1)通过request获得所有的Cookie:

    Cookie[] cookies = request.getCookies();

    2)遍历Cookie数组,通过Cookie的名称获得我们想要的Cookie

    for(Cookie cookie : cookies){

    if(cookie.getName().equal(cookieName)){

    String cookieValue = cookie.getValue();

    }

    }

     

    下面是一个利用cookie技术制作简单的上次登录时间记录:

     

    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class AccessTimeServlet extends HttpServlet {
     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //记录当前系统时间发送给客户端
      //创建当前系统 日期时间对象
      Date date=new Date();
      //创建日期格式转换类
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String time=sdf.format(date);
      //创建cookie对象
      Cookie cookie=new Cookie("lastAccessTime",time);
      //设置持久化时间
      cookie.setMaxAge(10*60);
      //发送cookie
      response.addCookie(cookie);
      //获取客户端携带的cookie信息
      String lastAccessTime=null;
      Cookie[] cookies=request.getCookies();
      if(cookies!=null){
       for(Cookie c:cookies){
        if(c.getName().equals("lastAccessTime")){
         lastAccessTime=c.getValue();
        }
       }
      }
      //对lastAccessTime进行判定
      response.setContentType("text/html;charset=utf-8");
      if(lastAccessTime==null){
       response.getWriter().write("你是第一次访问该网站!");
      }else{
       response.getWriter().write("你上次访问的时间为:"+lastAccessTime);
      }
     }
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doGet(request, response);
     }
    }
     
     
     
     
     
  • 相关阅读:
    硬盘安装windows2008的方法
    win7,win2008R2的vs2008 破解方法
    学习正则表达式
    C#里内置的DateTime基本功能
    jQuery Ajax 实例 全解析
    TreeView 部署后不能显示图标、js出错原因
    js 操作Listbox js 获取Listbox选择的值的代码
    ajax调用后台Datatable
    转:jquery刷新页面 页面跳转 js常用函数
    GridView多行表头的实现
  • 原文地址:https://www.cnblogs.com/nbkls/p/12894697.html
Copyright © 2020-2023  润新知