麻烦老师帮我看看

来源:2-6 静态数据预加载

Wonwayshon

2020-10-19 21:12:54

老师我完成了网站流量测试,但是我从浏览器无法打开,麻烦老师检查一下代码和配置,还有一个问题是我在eclipde中修改severs的web.xml的

<param-name>listings</param-name>

            <param-value>true</param-value>

想让tomcat页面显示出资源我好自查问题,但是修改完重启并没有效果,这个有办法解决吗?

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

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

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回答

好帮手慕阿慧

2020-10-20

同学你好,

1、web.xml中监听器配置有误,应该将RequestServletListener改为RequestTotalListener,参考代码如下:

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

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

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

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

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

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

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

修改后,建议同学看一下项目访问路径是不是requestTotal,如下:

项目右击选择Properties,选择web project setting,看一下context root值是不是requestTotal,如下:

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

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

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

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

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

0

0 学习 · 9666 问题

查看课程