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