网络日志数据session案例(下)"/>
网络日志数据session案例(下)
案例来自www.51doit.com培训班行哥的课程案例
第二问:
将每次session进行汇总,得出用户每次session的浏览起、止页面,每次session会话总时长等,示意如下:
分析:
代码如下:
1 . 新建一个IPBean用来存结果数据:
public class IPBean {
//session号 ip地址 起始请求时间 结束请求时间 起始页面 跳出页面 访问时长private long session;private String ip;private Date startTime;private Date endTime;private String startUrl;private String endUrl;/**访问时长,单位是秒*/private long time;
2 . 得到session汇总的结果
public static void secondQuestion() throws FileNotFoundException, IOException {//将每次session进行汇总,得出用户每次session的浏览起、止页面,每次session会话总时长List<IPBean> list = new ArrayList<>();//将MapMap<String, List<SessionBean>>转成需要的MapMap<Long, List<SessionBean>> sessionMap = getSessionMap();Set<Entry<Long, List<SessionBean>>> entrySet = sessionMap.entrySet();for (Entry<Long, List<SessionBean>> entry : entrySet) {List<SessionBean> value = entry.getValue();//如果value元素只有一个if(value.size()==1) {SessionBean sBean = value.get(0);IPBean ipBean = new IPBean(sBean.getSession(), sBean.getIp(), sBean.getTime(), sBean.getTime(), sBean.getUrl(), sBean.getUrl(), 0);list.add(ipBean);}else {//不止一个SessionBean startBean = value.get(0);SessionBean endBean = value.get(value.size()-1);//时间单位是秒long times = (endBean.getTime().getTime()-startBean.getTime().getTime())/1000;IPBean ipBean = new IPBean(startBean.getSession(), startBean.getIp(), startBean.getTime(), endBean.getTime(), startBean.getUrl(), endBean.getUrl(), times);list.add(ipBean);}}list.forEach(System.out::println);}
更多推荐
网络日志数据session案例(下)
发布评论