Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从servlet显示带有图像的html文件?_Java_Html_Jsp_Servlets - Fatal编程技术网

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

Java 如何从servlet显示带有图像的html文件?,java,html,jsp,servlets,Java,Html,Jsp,Servlets,我想从我的servlet中显示一个html文件,html文件存储在与我的webapp不同的服务器上,我目前正在使用FileInputStream和ServletOutputStream类使其工作,问题是它不显示图像。 这是我的servlet的代码: public class DisplayImage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)

我想从我的servlet中显示一个html文件,html文件存储在与我的webapp不同的服务器上,我目前正在使用FileInputStream和ServletOutputStream类使其工作,问题是它不显示图像。 这是我的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>

格拉菲科
天牛
Fecha:25/06/2015
现状:21:25 75
结果,它确实显示了html页面,但不知何故,图像丢失了。我想这可能是因为我在setContentType中指定了文本并发送了一个图像? 你有什么建议吗?
另外,使用getRequestDispatcher的部分也给我带来了麻烦,因为它不接受特定的路径,而且我认为我不会将文件放在应用程序文件夹中。感谢您的帮助。

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


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

问题在于您的web应用文件夹中没有这些文件。生成的html仍然指向服务器上位置
文件:\\C:\\Sistemas\\tendBe.png
处的图像,客户端肯定无法访问该位置

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

或者,您可以将图像转换为base64字符串,
数据url
,并将其用作html页面中的图像src。这样,您就不需要创建新的图像servlet了。有几种在线工具可以转换图像

使用数据url

谢谢!你说得对,我的html仍然指向一个本地地址,我把它改成了服务器的地址,现在它可以工作了。我不需要改变其他任何事情。