其實在大部分互聯網web產品中,我們通常會用百度統計或者谷歌統計分析系統,通過在程序中引入特定的JS腳本,然後便可以在這些統計系統中看到自己網站頁面具體的訪問情況。但是有些時候,由於一些特殊情況,我們需要自己來設計統計系統。由於前段時間公司的業務需求,我也是自己嘗試了下,本文提供的是一個基本思路,統計系統也比較簡單。
ID | ip (varchar) IP地址 | title(varchar)標題 | cur_page(varchar) 當前頁面 | from_page(varchar) 源頁面 | time(datetime)日期時間 | app(varchar) 應用 |
(function() {
var title = document.getElementsByTagName("title")[0].innerHTML, // 頁面標題
url = window.location.href, // 當前請求路徑名稱
site = window.location.host, // 站點host
// 此處爲從header獲取 Refere參數,具體獲取看當前的web程序
ref = ' <%=request.getHeader( "Referer") %>',
param = "?title="+title+" &url="+url+" &ref="+ref , // 引用頁地址
script = document.createElement("script");
script.src = "http://example.com/analysis"+param;
document.getElementsByTagName("head")[0].appendChild(script);
})();
/**
* 記錄站點統計信息
* @param request
*/
@RequestMapping( "/analysis")
@ResponseBody
public void visitorLogger(HttpServletRequest request) {
try {
WebsiteVisitCount visitor = new WebsiteVisitCount();
visitor.setUrl(request.getParameter( "url"));
String title = request.getParameter( "title");
if (title != null) {
visitor.setTitle( new String(title.getBytes("ISO-8859-1" ),
"utf-8"));
}
// 用戶IP
visitor.setFromUrl(request.getParameter( "ref"));
visitor.setUserIp(getRemortIP(request));
visitor.setApp(request.getParameter( "site"));
// 存儲數據
websiteVisitCountService.addVisitor(visitor);
} catch (Exception e) {
LOGGER.error( "WebsiteVisitCountController.visitorLogger():"
+request.getRequestURI(), e.getMessage());
}
}
/**
* 獲取客戶端IP地址
* @param request
* @return
*/
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader( "x-forwarded-for" ) == null ) {
return request.getRemoteAddr();
}
return request.getHeader( "x-forwarded-for" );
}
作者:Ziv小威
出處:http://imziv.com/
關於作者:專注於Java技術的程序員一枚,此外對JS開發保持着較高的興趣。愛好音樂,閱讀,FM等等。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
如有問題,可以郵件:[email protected]
微博:Ziv小威