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