玩转cookie 用户登录时间判断

来源:互联网 发布:网络整天不稳定 编辑:程序博客网 时间:2024/04/29 05:12

如何创建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();    }}
原创粉丝点击