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);
    }
}

原文地址:https://www.cnblogs.com/findlisa/p/10891890.html

时间: 2024-08-30 14:09:51

cookie实现记录访问的相关文章

解决cookie跨域访问

一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入cookie(记录着用户上下文信息),应用想要获取门户下的cookie,这就产生了cookie跨域的问题. 二.介绍一下cookie cookie 路径: cookie 一般都是由于用户访问页面而被创建的,可是并不是只有在创建 cookie 的页面才可以访问这个cookie.在默认情况下,出于安全方面

cookie 用户第一次访问时执行

? 1 <span style="color: rgb(255, 0, 0);"><script type="text/javascript" src="/js/jquery.Cookies.js"></script></span> ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3

cookie 跨域访问的解决方案

Cookie 同域单点登录  最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. 单点登录:多个不同系统整合到统一加载个平台,用户在任何一个系统登录后,可以访问这个统一加载上的所有系统.登录之后,用户的权限和信息不再受某个系统的限制,即使某个系统出现故障(包括统一加载平台),其他系统还是能正常使用的.这就需要用户权限等信息保存到客户端,不受服务器的限制. 在cookie相关文档信息中

node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录

关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比较符合传统的方式.网上也有很多这方面的文章,但基本上都是你抄我的,我抄你的,而且express有很多这种session/cookie的中间件,总是让人弄迷糊.很多文章都是点到为止,完全要靠自己慢慢去试,去看文档,去摸索. 我是基于connect这个中间件实现的.这个middleware 功能非常强大

location 设定某个文件的过期时间,并不记录访问日志

网页的根目录本来是: 6 root /app/www/default; 1 [[email protected] default]# cat /app/server/nginx/conf/vhosts/default.conf 2 server { 3 listen 80; 4 server_name espressos.cn; 5 index index.php index.htm index.html; 6 root /app/www/default; 7 location ~ .*\.(s

httpd用户认证,单个文件的用户认证,域名跳转,记录访问日志

针对httpd用户加验证 修改虚拟主机配置文件. vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成如下内容<VirtualHost *:80>DocumentRoot "/data/wwwroot/www.123.com"ServerName www.123.com<Directory /data/wwwroot/www.123.com> //指定认证的目录Allo

wamp本地localhost访问变卡及不记录访问日志的办法

事件背景: 用wamp做服务器半年多了. 6月6号开始,服务器卡得不行,服务器本地访问localhost都要30秒以上. 服务器本地localhost访问网站,F12检查发现TTFB值平均在二十七八秒. 说明服务器处理请求花费了大量的时间. 百度了一下wamp本地访问locahost变卡,得知是因为apache日志文件过大导致. 检查发现访问日志有13G了...删除之后并没有马上恢复,由于服务器正在采集数据,所以也不敢重启.等到第二天服务器才恢复正常. 后面就想着不记录访问日志. 处理方式: 1

haproxy 安装与记录访问日志

1.下载haproxy: haproxy的官网地址为http://www.haproxy.org/,写这篇文章的时候需要翻墙才可以访问, 当前的最新版本为1.6.3,是在2015年12月27号发布的,下载地址为http://www.haproxy.org/download/1.6/src/haproxy-1.6.3.tar.gz 2.编译安装: tar xvf haproxy-1.6.3.tar.gz cd haproxy-1.6.3 make TARGET=linux26 PREFIX=/us

pptp vpn 记录访问日志

/etc/ppp/文件夹下面自带有几个文件和一个文件夹 ip-down ip-down.ipv6to4 ip-up ip-up.ipv6to4 ipv6-down ipv6-up peers vpn连接日志记录主要实现是通过ip-up 和ip-down两个脚本来实现的.这里说下原理吧,原理是通过pptp建立连接的时候都会执行ip-up,然后断线会执行ip-down. 修改下ip-up 脚本内容 #!/bin/bash LOG_DIR="/var/log/pptpdlog"curDay=