玩转cookie 用户登录时间判断


如何创建cookie?

Cookie coo = new Cookie("name", "jack" + n);

如果要往cookie中写中文信息(是value,不是key),那么得进行编码

Random r = new Random();
        int n = r.nextInt(100);
        // 创建一个cookie
        // 如果要往cookie中写中文信息(是value,不是key),那么得进行编码
        String vv = "湖南";
        vv = URLEncoder.encode(vv, "utf-8");// 用utf-8编码
        Cookie coo = new Cookie("name", vv + n);

setMaxAge
有效期:以秒为单位 —-1分钟之后无效,浏览器再次访问当前网站时不会在request中带过来

coo.setPath(“/”);
cookie是通过path来设置权限的—-当前路径和子路径中的servlet可以访问到该cookie
因为cookie是给客户端用的,所以”/”表示Tomcat根目录

用户登录时间判断

读取所有cookie,遍历,看是否存在一个叫”loginTime”的cookie,若存在则把信息读取出来显示(上次登录时间),否则输出第一次登录

package cn.hncu.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
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 LoginServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");

        // 读取所有cookie,遍历,看是否存在一个叫"loginTime"的cookie,若存在则把信息读取出来显示(上次登录时间),否则输出第一次登录
        Cookie coo[] = request.getCookies();
        boolean boo = false;
        if (coo != null) {
            for (Cookie c : coo) {
                if (c.getName().equals("loginTime")) {
                    String strTime = c.getValue();
                    long lg = Long.parseLong(strTime);
                    Date d = new Date(lg);
                    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
                    boo = true;
                    out.println(df.format(d));
                }
            }
        }

        if (!boo) {
            out.println("您是第一次登录");
        }

        // 不管原来是否已经登录,都要把当前的最新时间创建成一个cookie存到客户端

        Cookie coo1 = new Cookie("loginTime", new Date().getTime() + "");
        coo1.setPath(request.getContextPath());
        coo1.setMaxAge(60 * 60 * 24 * 7);
        response.addCookie(coo1);

        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值