老师我这 访问次数 添加不上去

来源:2-2 请求流量分析统计-开发统计查询Servlet

Ctrlzhao

2019-11-27 23:43:31

package com.imooc.total2;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;

public class RequestTotalListener2 implements ServletContextListener,ServletRequestListener{

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
//		HttpServletRequest request = (HttpServletRequest)sre.getServletRequest();
//		//获取每一次的url地址
//		String url = request.getRequestURL().toString();
//		if(url.endsWith());
		List<String> timeList = (List)sre.getServletContext().getAttribute("timeList");
		List<Integer> valueList = (List)sre.getServletContext().getAttribute("valueList");
		//获取当前时间
		Date date = new Date();
		//设置时间格式
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
		String time = sdf.format(date);
		//查找当前时间是否存在
		if(timeList.indexOf(time)==-1) {
			//追加到列表中
			timeList.add(time);
			//设置当前时间访问初始值为1
			valueList.add(1);
			//时间和访问量存回ServletContext中
			sre.getServletContext().setAttribute("timeList", timeList);
			sre.getServletContext().setAttribute("valueList", valueList);
		}else {
			//当前时间存在,则访问直接加1
			//获取当前时间的索引值,从0开始
			int index = timeList.indexOf(time);
			//获取访问量
			int value = valueList.indexOf(index);
			//set()设置指定位置的数据即数据更新
			valueList.set(index, value+1);
			sre.getServletContext().setAttribute("valueList", valueList);
		}
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		List timeList = new ArrayList();//时间
		List valueList = new ArrayList();//访问量
		sce.getServletContext().setAttribute("timeList", timeList);
		sce.getServletContext().setAttribute("valueList", valueList);
		
	}
}

就是一直是0和1

http://img.mukewang.com/climg/5dde99a10984ec4e08080263.jpg

写回答

1回答

好帮手慕柯南

2019-11-28

同学你好!

获取访问量时,应该是直接get(index)获取值,而不是indexOf查看字符串首次出现的位置。

http://img.mukewang.com/climg/5ddf4207095d62a007890173.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0

0 学习 · 9666 问题

查看课程