如何从servlet显示带有图像的html文件?

时间:2015-06-30 04:03:45

标签: java html jsp servlets

我想从我的servlet显示一个html文件,html文件存储在与我的webapp不同的服务器中,我目前正在使用FileInputStream和ServletOutputStream类来使其工作,问题是它没有& #39; t显示图像。 这是我的servlet的代码:

public class DisplayImage extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    response.setContentType("text/html");
    ServletOutputStream out;
    out = response.getOutputStream();
    FileInputStream fin = new FileInputStream("C:\\Sistemas\\tendBe.html");

    BufferedInputStream bin = new BufferedInputStream(fin);
    BufferedOutputStream bout = new BufferedOutputStream(out);
    int ch = 0;;
    while ((ch = bin.read()) != -1) {
        bout.write(ch);
    }

    bin.close();
    fin.close();
    bout.close();
    out.close();       

//This doesn't work, it doesn't take that path.
   // RequestDispatcher view = request.getRequestDispatcher("file://C://Sistemas//tendBe.html");

    //view.forward(request, response);

}}

这是我的html文件:

<html>
    <head>
    <title>Grafico</title>
    </head>
    <body>

       <h2 style='background-color:Lightgray;'><center>Tendencia    Beetle</center>       </h2>
       <div align='center'><b>Fecha: 25/06/2015<br>
       Status: 21:25</b></div>
       <center><b> 75</b></div><center>
       <br>
       <Left><img src='tendBe.png'><Left>
       <Left><img src='file:\\C:\\Sistemas\\tendBe.png'><Left>
    </body>
</html>

结果,它确实显示了html页面,但是图像以某种方式丢失了。我想也许是因为我指定文本的setContentType和我发送的图像? 你有什么建议吗? 此外,使用getRequestDispatcher的部分让我陷入困境,因为它不接受特定路径,我不认为我会将文件放在应用程序文件夹中。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

问题是因为您的网络应用文件夹中没有这些文件。生成的html仍指向服务器上位置file:\\C:\\Sistemas\\tendBe.png的图像,客户肯定无法访问该图像。

截至目前,我的建议是创建另一个servlet来读取图像,就像你为html所做的那样。还要将html中的图像src更新为新的图像servlet URL。

或者您可以将图像转换为base64字符串data url,并将其用作html页面中的图像src。通过这个,您可以跳过创建新图像servlet的需要。有几种在线工具可以转换图像like

&#13;
&#13;
Using data url
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您必须更改HTML中src标记的img属性,以提供图片的正确网址。而且你必须找到一种从服务器提供这些图像的方法。

提示:图像(通常)提供单独的请求,即浏览器发出获取HTML的请求,然后分析HTML,如果找到需要下载的元素,则需要下载(例如图像或CSS / Javascript文件),浏览器发出一个新请求来获取它们(每个元素一个请求)。