麻烦老师帮我看看
来源:2-6 静态数据预加载
Wonwayshon
2020-10-19 21:12:54
老师我完成了网站流量测试,但是我从浏览器无法打开,麻烦老师检查一下代码和配置,还有一个问题是我在eclipde中修改severs的web.xml的
<param-name>listings</param-name>
<param-value>true</param-value>
想让tomcat页面显示出资源我好自查问题,但是修改完重启并没有效果,这个有办法解决吗?


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 RequestTotalServlet
*/
@WebServlet("/rt")
public class RequestTotalServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RequestTotalServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc=request.getServletContext();
List<String> timeList=(List)sc.getAttribute("timeList");
List<Integer> valueList=(List)sc.getAttribute("valueList");
response.setContentType("text/html;charset=utf-8");
Map data=new HashMap();
data.put("timeList", timeList);
data.put("valueList", valueList);
String json=JSON.toJSONString(data);
response.getWriter().println(json);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
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) {
List<String> timeList=new ArrayList();
List<Integer> 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")) {
return;
}
List<String> timeList=(List)request.getAttribute("timeList");
List<Integer> valueList=(List)request.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);
valueList.add(1);
sre.getServletContext().setAttribute("timeList", timeList);
sre.getServletContext().setAttribute("valueList", valueList);
}else {
int index=timeList.indexOf(time);
int value=valueList.get(index);
valueList.set(index,value+1);
sre.getServletContext().setAttribute("valueList", valueList);
}
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>RequestTotal</title>
<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="./js/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
function showChart(){
$ajax({
url:"./rt",
dataType:"json",
type:"get",
success:function(json){
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '访问流量分析'
},
tooltip: {},
legend: {
data:['访问次数']
},
xAxis: {
data: json.timeList
},
yAxis: {},
series: [{
name: '访问次数',
type: 'line',
data: json.valueList
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
})
}
window.setInterval(showChart(),1000);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test1</title>
</head>
<body>
<h1>This is test1!</h1>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test2</title>
</head>
<body>
<h1>This is test2!</h1>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test3</title>
</head>
<body>
<h1>This is test3!</h1>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>requestTotal</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.imooc.total.RequestServletListener</listener-class>
</listener>
</web-app>
1回答
同学你好,
1、web.xml中监听器配置有误,应该将RequestServletListener改为RequestTotalListener,参考代码如下:

2、RequestTotalListener类的requestInitialized()中,应该从ServletContext中获得timeList和valueList,参考代码如下:

3、在total.html中,$ajax中少了一个点,参考代码如下:

4、eclipse中修改severs的web.xml,如下:

修改后,建议同学看一下项目访问路径是不是requestTotal,如下:
项目右击选择Properties,选择web project setting,看一下context root值是不是requestTotal,如下:

如果不是,建议同学改为requestTotal。再重启Tomcat,访问 http://localhost:8080/requestTotal 试试 ,如下,根路径下有js,test1.html,total.html等资源文件:

点击total.html时,会进行访问,如下:

相似问题