package com.filter;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.bean.LogBean;
import com.service.LogService;
public class LogFilter implements Filter {
Logger logger = Logger.getLogger(LogFilter.class);
@Autowired
private LogService logService;
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
if (!(servletRequest instanceof HttpServletRequest)
|| !(servletResponse instanceof HttpServletResponse)) {
throw new ServletException(
"OncePerRequestFilter just supports HTTP requests");
}
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
HttpSession session = httpRequest.getSession();
String ip = httpRequest.getRemoteAddr();
String page = httpRequest.getRequestURI();
String contextPath = httpRequest.getContextPath();
String servletPath = httpRequest.getServletPath();
logger.info("doFilter sessionId="+session.getId()+",ip="+ip+",page="+page+",contextPath="+contextPath+",servletPath="+servletPath);
LogBean logBean = new LogBean();
logBean.setId(UUID.randomUUID().toString());
logBean.setSessionId(session.getId());
logBean.setIp(ip);
logBean.setPage(page);
logBean.setAccessTime(new Timestamp(new Date().getTime()));
logBean.setStayTime(0);
//通过session id 和 ip,查出最近的一条访问记录
LogBean bean = null;
try {
bean = logService.getLatestLog(session.getId(), ip);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
//更改最近访问记录的停留时间,这里把两次访问记录的间隔时间算成上一次页面访问的停留时间
if(bean != null){
long stayTime = (System.currentTimeMillis() - bean.getAccessTime().getTime())/1000;
try {
logService.updateLog(bean.getId(), stayTime);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
}
//保存当前访问记录
try {
logService.saveLog(logBean);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
//统计网站的PV(页面浏览量),UV(独立访客数)
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String format = df.format(new Date());
Date parse = null;
try {
parse = df.parse(format);
} catch (ParseException e1) {
e1.printStackTrace();
}
Timestamp startTime = new Timestamp(parse.getTime());
Timestamp endTime = new Timestamp(parse.getTime() + 24*3600*1000);
try {
int pv = logService.getPV(startTime, endTime);
int uv = logService.getUV(startTime, endTime);
logger.info("pv="+pv);
logger.info("uv="+uv);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
filterChain.doFilter(servletRequest, servletResponse);
return;
}
public void init(FilterConfig filterConfig) throws ServletException {
ServletContext context = filterConfig.getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
logService = (LogService) ctx.getBean("logService");
logger.info("init");
}
public void destroy() {
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
uv,pv统计的Java实现UVPVCount
共50个文件
jar:22个
class:7个
java:6个
5星 · 超过95%的资源 需积分: 50 133 下载量 187 浏览量
2016-08-19
16:52:32
上传
评论 7
收藏 6.7MB RAR 举报
温馨提示
Java+Spring+Mysql+C3P0 统计网站的访问量,比如PV(页面浏览量),UV(独立访客数),将统计结果保存到MYSQL数据库中。解压后有项目log和Mysql的建库脚本。
资源推荐
资源详情
资源评论
收起资源包目录
UVPVCount.rar (50个子文件)
log
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 500B
org.eclipse.jdt.core.prefs 330B
src
log4j.properties 758B
com
dao
LogDao.java 1KB
impl
LogDaoImpl.java 3KB
filter
LogFilter.java 4KB
bean
LogBean.java 1KB
service
LogService.java 1KB
impl
LogServiceImpl.java 903B
applicationContext.xml 2KB
.project 1KB
WebRoot
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 978B
classes
log4j.properties 758B
com
dao
LogDao.class 436B
impl
LogDaoImpl.class 3KB
LogDaoImpl$1.class 1KB
filter
LogFilter.class 5KB
bean
LogBean.class 2KB
service
LogService.class 448B
impl
LogServiceImpl.class 1KB
applicationContext.xml 2KB
lib
org.springframework.orm-3.0.3.RELEASE.jar 326KB
org.springframework.aop-3.0.3.RELEASE.jar 313KB
aopalliance-1.0.jar 4KB
mchange-commons-java-0.2.3.4.jar 568KB
org.springframework.expression-3.0.3.RELEASE.jar 156KB
org.springframework.jdbc-3.0.3.RELEASE.jar 371KB
org.springframework.beans-3.0.3.RELEASE.jar 541KB
org.springframework.context.support-3.0.3.RELEASE.jar 98KB
org.springframework.web-3.0.3.RELEASE.jar 380KB
slf4j-api-1.6.1.jar 25KB
org.springframework.web.servlet-3.0.3.RELEASE.jar 395KB
jcl-over-slf4j-1.7.2.jar 16KB
mysql-connector-5.1.8.jar 707KB
org.springframework.core-3.0.3.RELEASE.jar 357KB
aspectjweaver.jar 1.57MB
org.springframework.asm-3.0.3.RELEASE.jar 52KB
c3p0-0.9.2.1.jar 414KB
log4j-1.2.15.jar 383KB
org.springframework.transaction-3.0.3.RELEASE.jar 226KB
org.springframework.context-3.0.3.RELEASE.jar 647KB
slf4j-simple-1.6.1.jar 7KB
commons-pool-1.5.6.jar 98KB
index.jsp 834B
.mymetadata 282B
.classpath 2KB
.myeclipse
test.sql 356B
共 50 条
- 1
资源评论
- 夏日娃2017-06-02很实用,谢谢分享
- 花若盛开2017-05-03不错,可以用!
- 尹文辉2018-06-25不错,可以用!
- and_js2017-10-11不错,可以用!
Shaw777
- 粉丝: 2
- 资源: 36
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功