其實在大部分互聯網web產品中,咱們一般會用百度統計或者谷歌統計分析系統,經過在程序中引入特定的JS腳本,而後即可以在這些統計系統中看到本身網站頁面具體的訪問狀況。可是有些時候,因爲一些特殊狀況,咱們須要本身來設計統計系統。因爲前段時間公司的業務需求,我也是本身嘗試了下,本文提供的是一個基本思路,統計系統也比較簡單。jquery
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" ); }