cookie实现记录访问

Posted findlisa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie实现记录访问相关的知识,希望对你有一定的参考价值。

注意:1.设置的时间字符串特殊字符如空格在添加到cookie前要进行URL编码,获取打印前要进行解码。

   2.req获取的cookie是客户端带过来的,respond回去的是更改后的,要把客户端带来的和相应回去的cookie区分开。

 

 

/**
 * cookie显示上次访问时间
 */
@WebServlet("/ServletCookie")
public class ServletCookie extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        boolean flag=false;
        Cookie[] cookies = request.getCookies();
        if(cookies!=null&&cookies.length>0){

            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                String value = cookie.getValue();
                if(name.equals("lastTime")){
                    flag=true;
                    //给客户端响应一个新的cookie
                    String encode = getString();
                    cookie.setValue(encode);
                    //相应时间的cookie给客户端
                    cookie.setMaxAge(60*60*24*30);
                    response.addCookie(cookie);
                    //这个是请求带来的cookie
                    //解码前
                    System.out.println(value);
                    String decode = URLDecoder.decode(value,"utf-8");
                    response.getWriter().write("<h1>上次的访问时间为"+decode+"</h1>");
                    //访问到其中一个退出
                    break;
                }
            }
        }

        if (cookies==null&&cookies.length==0&&flag==false){
            String encode = getString();
            Cookie cookie=new Cookie("lastTime",encode);
            response.getWriter().write("欢迎首次访问!");
            //相应时间的cookie给客户端
            cookie.setMaxAge(60*60*24*30);

            response.addCookie(cookie);
        }

    }

    private String getString() throws UnsupportedEncodingException {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月-dd日 HH:mm:ss");
        String format = sdf.format(date);
        System.out.println("编码前"+format);
        String encode = URLEncoder.encode(format, "utf-8");
        System.out.println("编码后"+encode);
        return encode;
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

 

以上是关于cookie实现记录访问的主要内容,如果未能解决你的问题,请参考以下文章

js代码片段: utils/lcoalStorage/cookie

Cookie案例-显示用户的上次访问时间代码实现

jsp&cookie&session-01

Servlet案例6:显示用户的上次访问时间

跨域共享cookie

JavaWeb servlet 使用Cookie记录用户访问次数