我已经构建了一个 servlet,它对数据库进行一些查询,获取一些信息并将其转发到 jsp 页面。
除了这些信息之外,现在我想在请求中包含一个已在 servlet 中创建的图表。
小服务程序代码:
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
. More Servlet code..
.
.
.
case "Charts": {
String QueryStatus = "select distinct NodeStatus from nodes;";
Operations oper = new Operations();
ArrayList<?> ListStatus = oper.getList(QueryStatus);
request.setAttribute("ListStatus", ListStatus);
到这里一切正常,但是一旦我添加了以下代码:
JFreeChart Chart = null;
BACENGQueryDatabases DataChart = new BACENGQueryDatabases();
Chart = DataChart.GetChart("select Name, StNode from controls;");
if (Chart != null) {
int width = 500;
int height = 350;
final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
response.setContentType("image/png");
OutputStream out = response.getOutputStream();
ChartUtilities.writeChartAsPNG(out, Chart, width, height, info);
}
图表已打印,但没有其他内容。RequestDispatcher 被截断。
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/Charts.jsp"); //Set page to redirect data
rd.forward(request, response);// Forward data to the next page
break;
}
有什么方法可以转发图表,就像我正在使用 (request.setAttribute("ListStatus", ListStatus);) 在同一个 jsp 页面上使用的那样。
我拒绝使用将图表打印到文件然后在 jsp 上使用它,因为 I/O 性能,因为将创建许多图表。