zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    作业呢
    留言板
    题解 lg2480 古代猪文
    题解 lg4139 上帝与集合的正确用法
    AFO
    题解 lg2946 [USACO09MAR]Cow Frisbee Team S
    题解 lg4158 [SCOI2009]粉刷匠
    题解 HDU4035 Maze
    题解 lg3232 [HNOI2013]游走
    题解 HDU4652 Dice
  • 原文地址:https://www.cnblogs.com/findlisa/p/10891890.html
Copyright © 2011-2022 走看看