首先要新建一个模块API,这个模块中包含了启动类,并且每次在运行工程时都要运行该启动类,这样就实现了实时更新功能。在API中的login方法中,会把当前访问的年,月,日,时,分,秒信息都记录进一个sitePV类中,再将这整个sitePV类insert进数据库中,这样就实现了PV的功能。
以下是API模块的Controller中的login方法,仅供参考:
@RequestMapping(value = {"{resCode}/pv"})
@ResponseBody
public void login(Model model, HttpServletRequest request, @PathVariable final String resCode
) {
Res res = this.resService.loadByCode(resCode);
if (null == res) {
return;
}
SitePv sitePv = new SitePv();
sitePv.setSysId(res.getSysId());
sitePv.setChannelId(res.getChannelId());
sitePv.setResId(res.getId());
Calendar cal = Calendar.getInstance();
sitePv.setYear((short) cal.get(Calendar.YEAR));
sitePv.setMonth((short) (cal.get(Calendar.MONTH) + 1));
sitePv.setDay((short) cal.get(Calendar.DATE));
sitePv.setHour((short) cal.get(Calendar.HOUR_OF_DAY));
sitePv.setMinute((short) cal.get(Calendar.MINUTE));
sitePv.setSecond((short) cal.get(Calendar.SECOND));
//IP
sitePv.setIp(request.getRemoteAddr());
sitePv.setCreateTime(new Date(System.currentTimeMillis()));
this.sitePvService.insert(sitePv);
}
注意:
实时更新PV需要启动类、需要Controller,工程一启动就更新,而定时更新PV统计只需要一个普通的类(加的是@component注解)(在持久层、业务层和控制层中,分别采用@Repository、@Service和@Controller对分层中的类进行凝视,而用@Component对那些比较中立的类进行凝视)