Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP循环通过图像创建调用Servlet_Java_Image_Jsp_Loops_Servlets - Fatal编程技术网

Java JSP循环通过图像创建调用Servlet

Java JSP循环通过图像创建调用Servlet,java,image,jsp,loops,servlets,Java,Image,Jsp,Loops,Servlets,我在理解JSP和Servlet的连接时遇到了一个问题。我有一个JSP,它应该显示一个带有地图内容和相应图片的表 这张表显示了它的样子。但是每次我在循环中调用servlet时,我只会得到映射的最后一个条目的图像。 我知道我必须通过查询字符串来显示Servlet哪个图像属于哪个URL,但我不知道如何做到这一点 这是JSP的代码:它从Java类获取数据,而不是火箭科学 Map<String, HashMap<String, ArrayList<MethodLogEntryObject

我在理解JSP和Servlet的连接时遇到了一个问题。我有一个JSP,它应该显示一个带有地图内容和相应图片的表

这张表显示了它的样子。但是每次我在循环中调用servlet时,我只会得到映射的最后一个条目的图像。 我知道我必须通过查询字符串来显示Servlet哪个图像属于哪个URL,但我不知道如何做到这一点

这是JSP的代码:它从Java类获取数据,而不是火箭科学

Map<String, HashMap<String, ArrayList<MethodLogEntryObject>>> mainMap = rS.readMap();

    out.println("<h3>Data-Visualization</h3>");

    out.println("<table border=\"1\" style=\"float:left\">");

    for(Entry<String, HashMap<String, ArrayList<MethodLogEntryObject>>> entry : mainMap.entrySet()){    

        session.setAttribute("entryVisualize", entry);

        out.println("<tr><td>");
        out.println("<b>TraceID: </b>"+entry.getKey()+"<br>");

        HashMap<String, ArrayList<MethodLogEntryObject>> entry2 = entry.getValue(); 

        for(String key2 : entry2.keySet()){                 
            out.println("<b>Application: </b>"+key2+"<br>");
            ArrayList<MethodLogEntryObject> list = entry2.get(key2);
            Collections.sort(list);
            for(int i=0; i<list.size(); i++){
                out.println("<b>Method: </b>"+list.get(i).getMethodName()+" <b>Time: </b>"+list.get(i).getProcTime()+"<br>");
            }
        }
        out.println("</td>");
        out.println("<td><img src=\"/relationVisualization\"></td>");
        out.println("</tr>");           
    }
    out.println("</table>");
Map mainMap=rS.readMap();
out.println(“数据可视化”);
out.println(“”);
对于(条目:mainMap.entrySet()){
session.setAttribute(“entryVisualize”,entry);
out.println(“”);
out.println(“TraceID:+entry.getKey()+”
”; HashMap entry2=entry.getValue(); 对于(字符串key2:entry2.keySet()){ out.println(“应用程序:+key2+”
”; ArrayList list=entry2.get(key2); 集合。排序(列表);
对于(inti=0;i)“这是JSP的代码”呃,这看起来远不是一个真正的JSP文件。它也可以放在servlet类中。但是,你知道你可以在URL中传递请求参数吗?另请参见a.o。是的,我知道代码是用于JSP的,很难看。你想让页面中的所有图像作为单个响应的一部分显示吗?是的,我想添加的是我他将地图的键指向url,但知道我得到了一个nullpointerexception,我不知道为什么“);”
HttpSession session = request.getSession(false);
    response.setContentType("image/png");
    OutputStream out = response.getOutputStream();

    Entry<String, HashMap<String, ArrayList<MethodLogEntryObject>>> entryVis = (Entry<String, HashMap<String, ArrayList<MethodLogEntryObject>>>) session.getAttribute("entryVisualize");

    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    HashMap<String, ArrayList<MethodLogEntryObject>> entry2 = entryVis.getValue();

    for(String key2 : entry2.keySet()){     
        ArrayList<MethodLogEntryObject> list = entry2.get(key2);
        Collections.sort(list);
        int sumProc= 0;
        for(int i=0; i<list.size(); i++){
            if(i==0){
                dataset.addValue(list.get(i).getProcTime(), key2, list.get(i).getMethodName()); 
            }else{
                sumProc+=list.get(i).getProcTime();
            }            
        }
        if(sumProc>0){
        dataset.addValue(sumProc, key2, list.get(1).getMethodName());
        }

    }
    JFreeChart chart = ChartFactory.createBarChart(entryVis.getKey(), "Methods", "ProcTime", dataset, PlotOrientation.VERTICAL, true, true, false);
    chart.setBorderPaint(Color.gray);
    chart.setBorderStroke(new BasicStroke(2.0f));
    chart.setBorderVisible(true);

    ChartUtilities.writeChartAsPNG(out, chart, 400, 300);

    out.flush();
    out.close();