如何在Grails中实现(唯一)页面视图跟踪?

如何在Grails中实现(唯一)页面视图跟踪?,grails,grails-2.0,Grails,Grails 2.0,在我的应用程序中,我有不同的页面,用户可以与之交互。我需要的是以下内容。我想跟踪: 每个页面上有多少用户 每个页面上有多少唯一用户 我想在没有google analytics的情况下跟踪数据,因为我想自己分析数据。使用Grails过滤器: class TrackingFilters { def trackingService def filters = { access(controller: '*', action: '*') { be

在我的应用程序中,我有不同的页面,用户可以与之交互。我需要的是以下内容。我想跟踪:

  • 每个页面上有多少用户
  • 每个页面上有多少唯一用户
  • 我想在没有google analytics的情况下跟踪数据,因为我想自己分析数据。

    使用Grails过滤器:

    class TrackingFilters {
        def trackingService
    
        def filters = {
            access(controller: '*', action: '*') {
                before = {
                    if (!session.user) {
                        trackingService.trackIpAddress(getIpAddress())
                    } else {
                        trackingService.trackUser(session.user)
                    }
                }
            }
        }
    }
    
    更新 Grails过滤器是可以让Grails在请求前后执行的代码片段。 可以指定哪些控制器以及哪些操作受使用修改器的影响

    您可以使用命令创建过滤器 grails创建过滤器示例。跟踪

    你选择的名字只属于你一个人

    然后,您可以在生成的骨架类中定义一个过滤器(我创建了“访问”过滤器,应用于所有控制器和操作)

    在筛选器中,您可以访问请求和会话,因此您应该能够使用此上下文跟踪您的用户,例如:

    request.getRemoteAddr()
    request.getHeader("X-Forwarded-For")
    request.getHeader("Client-IP")
    

    非常迂腐:trackingService是一个由您实现的假设服务。

    使用谷歌分析,而不是重新发明轮子。我想跟踪数据,并在我的grails应用程序中使用它进行数据分析。那又怎样?使用api提取数据并使用它。所以我认为OP可以简单地编辑他的问题,然后说“我知道我可以用GA做这件事,但我宁愿自己做”,然后有人会说“好吧,在这种情况下,你可以这样做…”有很多很好的理由避免GA,包括想要跟踪非公开页面的访问,或者包含安全或私人信息的页面。您能稍微解释一下您的代码吗?它能做什么?trackingService在做什么?trackIpAddress是如何获得IP的?我不知道您在这里询问的是整个实现,从如何将代码挂接到grails到如何实际编写代码。我将更新我的答案,对什么是Grails过滤器进行一般性解释,但我没有时间为您重新实现google analytics;-)