1

好的,这是我遇到的问题。我有一个 servlet,它可以动态创建一个我不想保存在 HDD 上的图像(不是基于参数)。

我还有一个 HTML 模板 (JSP),我想在其中显示该图片。

我创建我的图像如下:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    PieDataset dataset = createDataset();
    JFreeChart chart = createChart(dataset, "OS Usage");

    resp.setContentType("image/png");
    ChartUtilities.writeChartAsPNG(resp.getOutputStream(), chart, 500, 400);

    req.getRequestDispatcher("report.jsp").forward(req, resp);
}

我的 JSP 看起来像这样:

<body>
    <h1>OS usage</h1>
    <p>Here are the results of OS usage in survey that we completed.<br>
    <p><img alt="OS usage" src="/reportImage">
</body>

当执行该代码时,我得到了我所期望的,从我编写代码的方式,只有一个图像,没有任何 html。

我的问题是如何做到这一点,以便 HTML 也呈现出来。

谢谢。

4

2 回答 2

3

您应该有两个 servlet:

  • 一种是生成 HTML 页面(通过转发到 JSP)。此生成的页面包含<img src="/reportImage" .../>. 当浏览器看到这个标签时,它会向 URL 发送第二个请求/reportImage
  • 一是生成图像,映射到/reportImageURL。这个 servlet 应该只将图像的字节发送到响应输出流。它不能转发到 JSP。
于 2012-05-29T11:03:43.350 回答
0

在您的servlet中声明count = 0 ..如果你得到图像然后增加计数值..现在值是1 ..在你的jsp代码中放置一个条件如果count == 1显示img否则隐藏

标签

于 2012-05-29T11:21:39.880 回答