javaWeb显示用户上次登录时间,如果是第一次登录,则显示“您是第一次访问本网站”

思路:
通过request.getCookies()获取本机cookie并创建cookie数组,对cookie数组进行遍历,
如果没有key为lasttime的cookie,则是第一次访问,
通过response.addCookie()方法添加key为lasttime,value为当前日期的cookie;
如果不是第一次访问,则获取lasttime的value值即为上次访问的时间

/**
 * @author 杨某人
 */
@WebServlet("/LastTimeServlet")
public class LastTimeServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        Cookie[] cookies = request.getCookies();//获取本机cookie
        String lasttime=null;
        if (cookies!=null){
            for (Cookie cookie:cookies){
                if ("lasttime".equals(cookie.getName())){
                    lasttime = URLDecoder.decode(cookie.getValue());
                    out.print("您上次登录的时间为:"+lasttime);
                    break;//获取到key为lasttime的cookie后,跳出循环
                }
            }
        }
        if (lasttime==null){
            out.print("您是第一次访问本网站");
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Cookie cookie = new Cookie("lasttime",URLEncoder.encode(sdf.format(new Date())));
        cookie.setMaxAge(60*60);
        response.addCookie(cookie);
    }
}

cookie获取和添加value时必须使用URLEncoder.encode()进行转码,不转码value会无效然后就无法addcookie,这里我也不知道具体为什么,欢迎各位大神留言解答

你可能感兴趣的:(Javaweb,jsp)