我使用
Java EE平台构建了一个Web应用程序,销售我的一个软件.
现在我想把我的网站营销工作交给各种电子营销公司.但由于我必须向他们提供佣金,我应该知道谁发送了流量.
我认为上述问题的一个解决方案是:
为每个电子营销公司创建一个单独的URL,并为其提供相应的URL,并将所有这些URL重定向到单个Servlet.然后,数不了.特定网址(电子营销公司的网址)上的访问者计算的数量.该电子营销公司转介的访客.
谷歌和其他各种使用类似的技术,区别于其他技术.
Q1. Do all of them uses this kind of approach?
Q2. Is there any other approach by which this can be done in a much better way?
你也可以建议其他一些东西……
提前致谢
解决方法
是的,我同意@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(); } }
<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>
并为所有servlet提供过滤器映射.