精华内容
下载资源
问答
  • 统计网站接口访问量

    千次阅读 2015-07-08 17:32:34
    time awk '{ print $7; }' /path/to/access.log | awk -F '[?#|]' '{ print $1; }' | awk -F '/' 'BEGIN{ OFS="/"; } { print $2,$3,$4; }' > access.log;awk '{a[$1]++} END{ for(i in a){ print a[i],i;...

    time awk  '{ print $7; }'  /path/to/access.log  | awk -F '[?#|]' '{ print $1; }' | awk -F '/' 'BEGIN{ OFS="/"; } { print $2,$3,$4; }' > access.log;awk '{a[$1]++} END{ for(i in a){ print a[i],i;}}' access.log | sort -k 1 -n -r > access.st


    time awk  '{ print $7; }' /path/to/access.log  | awk -F '?' '{ a[$1]++;} END{ for(i in a){ print a[i],i;} } ' | sort -k 1 -n -r > access.log


    展开全文
  • 记录网站访问量

    千次阅读 2020-06-30 11:43:46
    3、访问主页时增加访问量 4、前端获取点击量或在项目关闭前,将点击量存入数据库(ContextController) 数据库 create table context( click_num int ) dao层 接口 public interface ContextM.

    1、在数据库中创建表,存放点击量

    2、创建监听器(MyWebListener)实现ServletContextListener接口,当项目启动时通过dao层(ContextMapper)获取点击量,存入ServletContext中。

    3、访问主页时增加访问量

    4、前端获取点击量或在项目关闭前,将点击量存入数据库(ContextController)

    数据库

    create table context(
    	click_num int
    )
    

    dao层

    接口

    public interface ContextMapper {
        Integer selectClickNum();
    
        int updateClickNum(Integer clickNum);
    }
    

    xml

    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="包名.ContextMapper">
        <select id="selectClickNum" resultType="java.lang.Integer">
            select click_num
            from context
        </select>
    
        <update id="updateClickNum" parameterType="java.lang.Integer">
            update context
            set click_num = #{clickNum, jdbcType=INTEGER}
        </update>
    </mapper>
    

    监听器

    import cn.javak.mapper.ContextMapper;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    @Component
    public class MyWebListener implements ServletContextListener {
        @Autowired
        private ContextMapper contextMapper;
        private static final Logger logger = LoggerFactory.getLogger(MyWebListener.class);
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            logger.info("项目初始化变量");
            ServletContext context = sce.getServletContext();
            Integer clickNum = null;
            try {
                clickNum = contextMapper.selectClickNum();
                context.setAttribute("clickNum",clickNum);
                logger.info("初始化网站点击量"+clickNum);
            }catch (Exception e){
                logger.error("获取点击量失败", e);
            }
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            logger.info("项目终止");
        }
    }
    

    访问主页时插入以下代码

    //增加点击量
    ServletContext context = request.getServletContext();
    Integer clickNum = (Integer) context.getAttribute("clickNum");
    context.setAttribute("clickNum", ++clickNum);
    

    提供网站访问量接口

    import com.alibaba.fastjson.JSONObject;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.context.WebApplicationContext;
    
    import javax.annotation.PreDestroy;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    
    @RestController
    @RequestMapping("/context")
    public class ContextController {
        @Autowired
        private ContextMapper contextMapper;
        @Autowired
        private WebApplicationContext webApplicationConnect;
    
        private static final Logger logger = LoggerFactory.getLogger(ContextController.class);
    
        @GetMapping("/clickNum")
        public JSONObject getClickNum(HttpServletRequest request) {
            ServletContext context = request.getServletContext();
            Integer clickNum = (Integer) context.getAttribute("clickNum");
            JSONObject obj = new JSONObject();
            obj.put("status","success");
            obj.put("msg","获取网站访问量成功");
            obj.put("clickNum", clickNum);
            return obj;
        }
    
        /**
         * 项目关闭前更新网站点击量
         */
        @PreDestroy
        public void destroy() {
            Integer clickNum = (Integer) webApplicationConnect.getServletContext().getAttribute("clickNum");
            contextMapper.updateClickNum(clickNum);
            logger.info("更新点击量成功" + clickNum);
        }
    }
    

    前端ajax

    url = function (i) {
        //项目路径
        return "http://localhost:8080/" + i;
    };
    loadClickNum = function () {
        $.ajax({
            type: 'get',
            url: url("context/clickNum"),
            cache: false,
            dataType: 'json',
            success: function (data) {
                //获取显示点击量元素的id
                $("#clickNum").text(data.obj.clickNum);
            }
        });
    };
    

    点击量

    展开全文
  • 如何实现对网站页面访问量的统计(javaweb和php)...用拦截器+定时更新要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求然后拦截请求需要做的是什么?从数据库取出...

    如何实现对网站页面访问量的统计(javaweb和php)

    一、总结

    一句话总结:其实很简单啦,每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了。

    1、javaweb中如何实现对网站页面访问量的统计?

    用拦截器+定时更新

    要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求

    然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,

    2个小时(自定义:时间越短越不容易造成访问量数据丢失)

    2、thinkphp中如何实现对网站页面访问量的统计?

    thinkphp中真实超级简单

    每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了。

    记得加1的时候用自增函数(setInc)就好

    二、javaweb中如何实现对网站页面访问量的统计?

    我用的springmvc,大致讲讲自己的思路吧:

    要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求,但是需要注意的是,配置拦截器的时候

    需要排除不拦截的请求,因为对于静态资源css,js,以及图片,还有后台管理系统我们是不需要拦截的,我们只拦截用户访问的页面,也就是你展示

    给用户的那些页面,配置拦截大概这样配置

    然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,

    我想的是写一个监听器,servletContextListener,监听servletContext的初始(只在服务器启动的时候被创建),服务器启动时候去数据库中取出访问量,

    放到servletContext(全局的域,在其他请求中都可以取出来),然后每次一个请求都把放在servletContext中的访问量加1(这个是在拦截器中做的事情),在初始化servletContext时还需要做一个事情,开启线程定时把servletContext中的访问量存储到数据库中,如何定时执行?我想的是写一个循环,执行一次循环就让线程休眠

    2个小时(自定义:时间越短越不容易造成访问量数据丢失),后来偶然看到了jdk文档中一个类,Timer,一个定时器,详细参考文档,它的访问可以实现定时执行任务,原理估计也差不多吧,这大概就是实现过程,具体代码就不贴了。有个比较严重的问题没有考虑到:由于ServletContext在内存中

    只有一个对象,并发访问可能会造成线程安全问题,初步想在ServletContext中当一个线程安全的集合,数据的存取放在集合中

    参考:如何实现对网站页面访问量的统计? - CSDN博客

    https://blog.csdn.net/qq_37667364/article/details/79326243

    三、thinkPHP实现新闻访问量统计

    public function detail(){

    $this->assign('page_title','新闻中心');

    $id=I('id',0,'int');

    $newsModel=M('News');

    // 新闻点击量的实现,借助于setInc()函数,每访问一次新闻字段“in_on”加1

    $newsModel->where(array('id'=>$id))->setInc('in_on',1);

    $news=$newsModel->find($id);

    $this->assign('news',$news);

    $this->display();

    }

    在新闻详细页面控制器中加入

    $newsModel->where(array('id'=>$id))->setInc('in_on',1);

    $news=$newsModel->find($id);

    利用setInc实现没访问一次字段‘in_on’的值加1,这里字段“in_on”的初始值为0.

    展开全文
  • 简言之,如果不用第三方提供的接口那最好的解决方案应该是当SESSION建立时sessionCreated(),在访问总数和当前在线人数上+1当SESSION销毁时sessionDistroyed(),在线人数-1核心方法是利用Listener监听的各种接口我把...

    简言之,如果不用第三方提供的接口

    那最好的解决方案应该是当SESSION建立时sessionCreated(),在访问总数和当前在线人数上+1

    当SESSION销毁时sessionDistroyed(),在线人数-1

    核心方法是利用Listener监听的各种接口

    我把代码(主要部分)贴在下面

    此段代码我亲自使用过,没有问题

    但因为继承了接口,有些未使用的方法也要补充进去,具体方式比如在MyEclipse中可以靠点错误,ADD UNIMPLEMENTED METHOD实现

    package com.eaie.system;

    import java.io.FileOutputStream;

    import java.io.InputStream;

    import java.io.PrintWriter;

    import java.net.MalformedURLException;

    import java.net.URL;

    import java.util.Enumeration;

    import java.util.Set;

    import javax.servlet.RequestDispatcher;

    import javax.servlet.Servlet;

    import javax.servlet.ServletContext;

    import javax.servlet.ServletContextEvent;

    import javax.servlet.ServletException;

    import javax.servlet.ServletRequestEvent;

    import javax.servlet.ServletRequestListener;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpSessionActivationListener;

    import javax.servlet.http.HttpSessionEvent;

    import javax.servlet.http.HttpSessionListener;

    public class SessionListener implements HttpSessionActivationListener,

    HttpSessionListener, ServletContext, ServletRequestListener {

    ServletContext context;

    int onLineUserNum = 0;

    int visitNum = 0;

    HttpServletRequest request;

    public void sessionDidActivate(HttpSessionEvent session) {

    log(”seesionDidActive(”+session.getSession().getId()+”)”);

    }

    public void sessionWillPassivate(HttpSessionEvent session) {

    log(”seesionWillPassivate(”+session.getSession().getId()+”)”);

    }

    public void sessionCreated(HttpSessionEvent event) {

    onLineUserNum++;

    visitNum ++;

    String ip = request.getRemoteAddr();

    log(”sessionCreated(’”+event.getSession().getId()+”‘),–>IP:”+ip);

    context.setAttribute(”onLineUserNum”, new Integer(onLineUserNum));

    context.setAttribute(”visitNum”, new Integer(visitNum));

    }

    public void sessionDestroyed(HttpSessionEvent event) {

    if (onLineUserNum>0){

    onLineUserNum–;

    }

    String ip = request.getRemoteAddr();

    log(”sessionDestroyed(’”+event.getSession().getId()+”‘),–>IP:”+ip);

    context.setAttribute(”onLineUserNum”, new Integer(onLineUserNum));

    }

    public void contextDestroyed(ServletContextEvent sce){

    log(”contextDestroyed–>ServletContext is destroyed”);

    this.context = null;

    }

    public void contextInitialized(ServletContextEvent sce){

    this.context = sce.getServletContext();

    log(”contextDestroyed–>ServletContext is initialized”);

    }

    public int getUserOnline(){

    return this.onLineUserNum;

    }

    public void log(String message) {

    PrintWriter out = null;

    try{

    out = new PrintWriter(new FileOutputStream(”c:\\eaieLogger.txt”,true));

    out.println(new java.util.Date().toLocaleString()+”::From SessionListener:”+message);

    out.println(”Totle visit number:”+this.visitNum+” and current **** num: “+onLineUserNum);

    out.println(”=================================”);

    out.close();

    }catch(Exception e){

    e.printStackTrace();

    out.close();

    }

    }

    public void requestInitialized(ServletRequestEvent event) {

    request = (HttpServletRequest)event.getServletRequest();

    }

    //省略其他方法

    }

    这个程序需要在web.xml中配置:

    com.eaie.system.SessionListener

    需要注意的是LISTENR的位置,必须在的相关配置之后,在的相关配置之前

    展开全文
  • 简言之,如果不用第三方提供的接口那最好的解决方案应该是当SESSION建立时sessionCreated(),在访问总数和当前在线人数上+1当SESSION销毁时sessionDistroyed(),在线人数-1核心方法是利用Listener监听的各种接口我把...
  • 实现网站在线访问计数器功能,网站的初始值设置为1000(1)创建CountFilter的类,实现javax。servlet.Filter接口,是一个过滤器对象,通过过滤器实现统计网站人数功能:package com.lixiyu;import java.io.IOException...
  • 首先创建名称为CountFilter的类,将其放置在com.chesg.filter包中,该类实现javax.servlet.Filter接口,是一个过滤器对象,通过该过滤器实现统计网站访问人数功能,下图是eclipse编辑器文件结构图关键代码如下,...
  • 1)、前端var options = {appId: 'ce7140894a53424243200c71787fcafb3728', // 唯一标识,必填server: 'https://constid.dingxiang-inc.com/udid/c1', // ConstId 服务接口,可选userId: 'oHL30wVEuI258Lgp8d1kQmSSW4...
  • 最近网站被黑客攻击,一个获取验证码的接口被大量的请求(大概1天有几十万次的请求), 这个获取验证码的接口做的事情是生成一个随机数放到session里, 服务器运行了大概1个月左右,所有涉及到访问数据库的请求都没有反应...
  • 统计java网站访问量和在线人数

    千次阅读 2012-08-16 13:45:48
     那最好的解决方案应该是当SESSION建立时sessionCreated(),在访问总数和当前在线人数上+1  当SESSION销毁时sessionDistroyed(),在线人数-1  核心方法是利用Listener监听的各种接口  我把代码(主要部分)贴在...
  • 如何实现对网站页面访问量的统计(javaweb和php) 一、总结 一句话总结:其实很简单啦,每访问一次那个...要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求 ...
  • 我用的springmvc,大致讲讲自己的思路吧:要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求,但是需要注意的是,配置拦截器的时候需要排除不拦截的请求,因为...
  • SpringBoot结合jpa,监听器、thymeleaf实现监听网站访问量1、导入依赖、进行相关配置2、创建监听表3、编写实体类4、编写业务层接口5、编写业务层接口实现类6、编写监听器7、编写控制器8、编写HTML文件,展示内容9...
  • 1)、是servlet与servlet容器之间的通信接口; 2)、每个servlet应用都会创建一个ServletContext对象与之对应; 3)、ServletContext对象被web应用下的所有servlet共享; 4)、访问web应用资源。 2、...
  • 现在有一个需求,记录某个网站不同ip的访问次数,或者是记录每个接口访问次数,那么最终存储的数据就有可能是这样子: 123.1.2.1 : 10次 123.1.2.2 : 50次 220.121.205.9 : 17次 .................. 或 /l....
  • java网站如何统计访问量和在线人数实例源码。简言之,如果不用第三方提供的接口那最好的解决方案应该是当SESSION建立时sessionCreated(),在访问总数和当前在线人数上+1当SESSION销毁时sessionDistroyed(),在线人数-1...
  •  那最好的解决方案应该是当SESSION建立时sessionCreated(),在访问总数和当前在线人数上+1  当SESSION销毁时sessionDistroyed(),在线人数-1  核心方法是利用Listener监听的各种接口  我把代码(主要部分)贴在...
  • 1.flask是一个python编写的轻级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。 flask需要先安装再引用。pip install flask 2.写了三个文件 1.json_test.py内容,该接口可直接访问...
  • 网站中发现有人恶意频繁的注册账号,打算在注册接口处增加效验工具,思路如下:记录访问IP 和 时间如果在五分钟内连续访问更新计时器更新计数器10分钟内不访问计时器清零思路很简单源码如下package ...
  • 可以通过实现ServletContextListener 接口,重写contextDestroyed(ServletContextEvent arg0) contextInitialized(ServletContextEvent arg0)在初始化的时候进行持久化读取,销毁的时候持久化存储,至于放在文件还是...
  • 思路: 第一步:使用pypeteer.launcher打开浏览器, ... 第三点:打开CNZZ的相关页面,然后取...第四步:拿到cookie信息之后,就可以使用python调用页面上的各种接口地址(通过network查看相关的接口地址)取到你想...
  • 高危接口访问熔断机制

    千次阅读 2018-09-26 10:08:19
    特别是大批操作时,更加需要明确停机或释放机器的准确性,一旦批量误操作甚至导致整个网站业务线的崩溃。为了防止造成这种巨大损失的局面,针对高风险操作接口提供一种限流熔断机制,批量操作时可以有效的制止过度...
  • Jmeter刷csdn博客访问量

    千次阅读 2019-05-30 09:48:54
    使用Jmeter刷csdn博客访问量首先我们先分析一下该网站接口情况 服务器ip为blog.csdn.net 协议为https 接口url为/qq_38776582 请求方法为GET 打开jmeter,分别将参数填写进去: copy请求头参数,填写在...
  • PV:page view 页面的访问量、浏览量。UV:Unique Visitor 一天24小时内,你的网站访问的IP数量。我们以vue项目来举例,每访问一个页面,都会经过main.js文件,所以我们在main.js中调用接口,将页面链接,名称等参数...
  • 即使访问https网站也都是绿色的,有个很特殊的大型购票网站则不是,所以本文主要介绍如何使用Okhttp访问自签名证书的https接口。而且公司自己服务接口也全部换成了https接口,在去年就说ios要强
  • 甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了! 究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下...
  • java 实现IP访问量控制

    千次阅读 2016-10-18 15:05:13
    网站中发现有人恶意频繁的注册账号,打算在注册接口处增加效验工具,思路如下: 记录访问IP 和 时间 如果在五分钟内连续访问更新计时器更新计数器 10分钟内不访问计时器清零 思路很简单源码如下 package ...
  • 创建一个过滤器,实现网站访问计数器的功能,并在web.xml文件的配置中将网站访问量的初始值设置为5000。 创建名称为CountFilter的类 创建名称为CountFilter的类,该类实现javax.servlet.Filter接口,是一个过滤器...
  • 使用RedisAtomicLong优化"访问量"性能

    千次阅读 2018-03-08 21:54:19
    在每一个网站中,如果要设计访问量这个功能的话,那么将无疑会是请求量最多的接口,那么使用MySQL来进行count(*)查询明显性能就会显差了,并且这个数据要求实时,也不能作缓存,那么便需要Redis这种内存型数据库出场...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 927
精华内容 370
关键字:

网站访问量接口