Java 如何实现我的web应用程序的附属链接?

Java 如何实现我的web应用程序的附属链接?,java,servlets,jakarta-ee,affiliate,Java,Servlets,Jakarta Ee,Affiliate,我使用JavaEE平台构建了一个web应用程序,该平台销售我的一个软件 现在我想把我的网站营销工作交给各种电子营销公司。但是,由于我将不得不给他们佣金,我应该知道谁发送了流量 我认为解决上述问题的一个办法是: 为每个电子营销公司创建一个单独的URL,并为其提供相应的URL,并将所有这些URL重定向到单个Servlet。然后,计算特定URL(电子营销公司的URL)上的访问者数量,以计算该电子营销公司推荐的访问者数量 Google和其他各种网站都使用了类似的技术,将两者区别开来 问题1。他们都使用这

我使用JavaEE平台构建了一个web应用程序,该平台销售我的一个软件

现在我想把我的网站营销工作交给各种电子营销公司。但是,由于我将不得不给他们佣金,我应该知道谁发送了流量

我认为解决上述问题的一个办法是:

为每个电子营销公司创建一个单独的URL,并为其提供相应的URL,并将所有这些URL重定向到单个
Servlet
。然后,计算特定URL(电子营销公司的URL)上的访问者数量,以计算该电子营销公司推荐的访问者数量

Google
和其他各种网站都使用了类似的技术,将两者区别开来

问题1。他们都使用这种方法吗

问题2。有没有其他方法可以更好地做到这一点

你也可以给我一些其他的建议


提前感谢

与前面的答案非常相似-您可以为每个附属网站提供他们将提交的唯一密钥(在URL中)。您的服务器应用程序将(解密并)将密钥与附属网站列表相匹配,并计算潜在客户来源

好的,有三种可能:

  • 正如您所提到的,每个公司的唯一url
  • 使用访问用户需要输入的“优惠券代码”。对来访者来说有点烦人,但我见过这样的事情
  • 最后,只有当你提到的公司有一个网站并从那里链接到你的网站时才有效:通过捕获referer url
  • 在我看来,最好的是第一种选择。这可能就是为什么这是最广泛使用/知道的


    您可能希望实现cookie来“记住”来自哪个公司的访问者,因此当访问者(首次访问时没有决定购买任何东西)返回并购买东西时,您将知道哪个公司向他们介绍您的站点。

    您也可以使用查询字符串参数。(这可能就是krassib所指的。) 像


    然后让这个页面从URL解析查询字符串并存储/计算它

    是的,我同意@krassib和@TomR-使用queryString参数,然后您可以编写一个servlet过滤器来检查特定的参数,并增加该分支的计数。使用servlet过滤器还将为您带来额外的好处,可以跟踪每个分支机构的单个链接数量

    您可以执行以下操作:

    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class AffiliateTrackingFilter implements Filter {
        private AffiliateTrackingService affiliateTrackingService = null;
    
        @Override
        public void destroy() {
        }
    
        @Override
        public void doFilter(ServletRequest rq, ServletResponse rs,
                FilterChain chain) throws IOException, ServletException {
            String affililateId = rq.getParameter("affiliateId");
            affiliateTrackingService.incrementAffiliateHit(affililateId);
            chain.doFilter();
        }
    
        @Override
        public void init(FilterConfig fc) throws ServletException {
            affiliateTrackingService = new AffiliateTrackingService();
        }
    }
    
    然后在web.xml中添加如下内容:

    
    附着过滤器
    com.example.affiliatKingFilter
    附着过滤器
    MyMainServlet
    

    并为您的所有servlet创建一个过滤器映射。

    为什么不使用已有的呢?我谈论的是HTTP协议及其头字段之一:REFERER(通常传递给环境变量HTTP\u REFERER或HTTP\u REFERER中的代码)

    虽然它不是100%防弹的(但再说一次,什么是100%防弹的?),但我认为它在你的情况下就足够了。我假设您的客户与分支机构有关联,是从他们的一个网站上推荐的?如果是这样,你很容易区分来自不同电子营销公司的客户,因为他们每个人都应该有自己的域名

    请阅读更多有关该网站的信息。请记住,尽管引用者欺骗或隐藏是可能的,但可能性非常小(查看我的服务器日志文件,估计95%的访问者确实发送了引用者字段)


    问候。

    好的,这是另一个。您可以使用锚定方法。让我解释一下:

    想象一下
    http://myappz.com/fooshop_cs
    是销售产品的URL,这是您分发给附属公司的内容,但每个都有一个小的变化。您只需通过劫持(即
    http://myappz.com/fooshop_cs#em001

    一旦用户访问了指向您的站点的链接,并且该链接使用了唯一ID,您就可以使用Javascript(
    location.href.search(/#em\d*/)
    )检查该ID是否存在。一旦您找到了一个ID,您只需触发一个AJAX调用就可以将该分支机构提升到一个级别(我建议使用jQuery框架)

    这种方法的好处是,搜索引擎不关心片段标识符,您可以从单个页面销售产品。你的用户也不会在意,因为锚定对他们绝对没有影响(除非你在页面中设置锚定标签)


    再见

    关于aefxx关于片段标识符的回答,我认为这种方法的好处是保持SEO排名。如果是这样,您仍然可以使用querystring来管理它,但是您必须在googlewebmaster工具中将它们设置为忽略。我想必应和雅虎也有类似的机制。这样,您仍然可以基于querystring进行跟踪,事实上,您也可以在Google Analytics中跟踪它(它不跟踪片段标识符)如果您愿意,无需定制。

    @SimonOrd一些来自搜索引擎的请求不会包含分支机构id。那么解决方案是什么呢?@Yatendra:来自搜索引擎的请求不应与分支机构关联,因为分支机构不负责向您的网站提供流量。也就是说,它们不需要包含分支机构ID,因为它们不是来自分支机构。@Software Monkey。。我知道这就是为什么我问上述问题。。。事实上你解释错了,或者我解释不清楚。。。现在我从别人那里得到了答案。。但是谢谢你花时间在这里answering@simonlord当您跟踪CPC、CPM等时,上述解决方案非常有效。但如何跟踪付款?如果用户购买X产品,那么只有我想支付佣金。大部分的方法
    <filter>
        <filter-name>AffiliateTrackingFilter</filter-name>
        <filter-class>com.example.AffiliateTrackingFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>AffiliateTrackingFilter</filter-name>
        <servlet-name>MyMainServlet</servlet-name>
    </filter-mapping>