【问题标题】:How to show both pregenerated html and an image in JSP?如何在 JSP 中同时显示预生成的 html 和图像?
【发布时间】:2012-06-03 14:02:58
【问题描述】:

好的,这是我遇到的问题。我有一个 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 也呈现出来。

谢谢。

【问题讨论】:

  • 您需要支持哪些浏览器?如果您只针对现代集合,那么您将能够使用 data-uri (css-tricks.com/data-uris)。另一件事是为图像和页面编写一个 servlet。

标签: html image jsp dynamic text


【解决方案1】:

你应该有两个 servlet:

  • 用于生成 HTML 页面(通过转发到 JSP)。这个生成的页面包含&lt;img src="/reportImage" .../&gt;。当浏览器看到这个标签时,它会向 URL /reportImage 发送第二个请求。
  • 一个生成图像,映射到/reportImage URL。这个 servlet 应该只将图像的字节发送到响应输出流。它不能转发到 JSP。

【讨论】:

    【解决方案2】:

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

    标签

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      相关资源
      最近更新 更多