您的位置:首页 > 其它

玩转cookie 用户登录时间判断

2017-07-14 09:44 232 查看

Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: