老师这是哪里出错了?

来源:2-4 实现动态图表

衮雪TripleRock

2020-03-24 10:54:10

package com.imooc.total;


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 RequestTotalListener implements  ServletContextListener,ServletRequestListener{


@Override

public void contextDestroyed(ServletContextEvent sce) {

// TODO Auto-generated method stub

}


@Override

public void contextInitialized(ServletContextEvent sce) {

// TODO Auto-generated method stub

List timeList=new ArrayList();

List valueList=new ArrayList();

sce.getServletContext().setAttribute("timeList",timeList);

sce.getServletContext().setAttribute("valueList",valueList);

}


@Override

public void requestDestroyed(ServletRequestEvent sre) {

// TODO Auto-generated method stub

}

@Override

public void requestInitialized(ServletRequestEvent sre) {

HttpServletRequest request=(HttpServletRequest)sre.getServletRequest();

String url=request.getRequestURL().toString();

if(url.endsWith("/rt")==true) {

return;

}


// TODO Auto-generated method stub

// TimeList:   10:02     10:03       10:04

// ValueList:     5        7           10

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);

//indexof()查找对应数据在集合中是否存在,不存在时为-1,存在时返回数据在集合中的位置

if(timeList.indexOf(time)==-1) {

timeList.add(time);

valueList.add(1);

sre.getServletContext().setAttribute("timeList",timeList);

sre.getServletContext().setAttribute("valueList",valueList);

}else {

int index=time.indexOf(time);

int value=valueList.get(index);

valueList.set(index,value+1);

sre.getServletContext().setAttribute("valueList",valueList);

}

}

}




package com.imooc.total;


import java.io.IOException;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import com.alibaba.fastjson.JSON;


/**

 * Servlet implementation class RequestToralServlet

 */

@WebServlet("/rt")

public class RequestToralServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public RequestToralServlet() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//得到全局对象

ServletContext context= request.getServletContext();

List<String> timeList=(List)context.getAttribute("timeList");

List<Integer> valueList=(List)context.getAttribute("valueList");

response.setContentType("text/html;charset=utf-8");

/*

* response.getWriter().println(timeList.toString());

* response.getWriter().println("<br/>");

* response.getWriter().println(valueList.toString());

*/

Map result =new HashMap();

result.put("timeList",timeList);

result.put("valueList",valueList);

String json =JSON.toJSONString(result);

response.getWriter().println(json);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}


}





<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>ECharts</title>

<script  src="js/echarts.min.js"></script>

<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>

</head>

<body>

<div id="main" style="width: 600px;height:400px;"></div>

<script type="text/javascript">

function showChart(){

  $.ajax({

url:"./rt",

type:"get",

dataType:"json",

success:function(json){

console.log(json.timeList);

console.log(json.valueList);

// 基于准备好的dom,初始化echarts实例

var myChart = echarts.init(document.getElementById('main'));


// 指定图表的配置项和数据

var option = {

title : {

text : '请求流量分析统计'

},

tooltip : {},

legend : {

data : [ '访问量' ]

},

xAxis : {

data : json.timeList

},

yAxis : {},

series : [ {

name : '访问量',

/*bar代表柱状图     line表示折线图*/

type : 'line',

data : json.valueList

} ]

};

// 使用刚指定的配置项和数据显示图表。

myChart.setOption(option);

}

})

}

//每隔1秒调用一次showChart()

window.setInterval("showChart()",1000);

</script>

</body>

</html>

老师每次访问的数据都会给第一个时间+1,而之后的时间一直赋值为1 不会增长

写回答

1回答

好帮手慕小脸

2020-03-24

同学你好,错误如下:

    应使用timeList.indexOf(),而不是time。

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

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

0

0 学习 · 9666 问题

查看课程