Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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获取图像到JSP页面_Java_Image_Jsp_Servlets - Fatal编程技术网

Java 帮助从Servlet获取图像到JSP页面

Java 帮助从Servlet获取图像到JSP页面,java,image,jsp,servlets,Java,Image,Jsp,Servlets,我目前必须生成一个显示字符串文本的图像,我需要在Servlet上生成该图像,然后以某种方式将该图像传递给JSP页面,以便它能够显示它。我试图避免保存图像,而是以某种方式将图像流式传输到JSP 自从我开始寻找如何将一个图像从Servlet传递到JSP adn以来,我还没有找到生成图像的方法 编辑: jsp页面已经生成,并且不是由servlet创建的,我必须将图像传递到已经存在的jsp中 非常感谢您的帮助。如果我正确理解了您的问题,事件顺序如下: 生成一个HTML页面 HTML页面被发送到客户端;及

我目前必须生成一个显示字符串文本的图像,我需要在Servlet上生成该图像,然后以某种方式将该图像传递给JSP页面,以便它能够显示它。我试图避免保存图像,而是以某种方式将图像流式传输到JSP

自从我开始寻找如何将一个图像从Servlet传递到JSP adn以来,我还没有找到生成图像的方法

编辑: jsp页面已经生成,并且不是由servlet创建的,我必须将图像传递到已经存在的jsp中


非常感谢您的帮助。

如果我正确理解了您的问题,事件顺序如下:

  • 生成一个HTML页面
  • HTML页面被发送到客户端;及
  • 客户端浏览器读取图像URL并将其作为单独的请求进行请求
  • 因此,您无法生成图像并将其传递给JSP。但是,您可以生成一个URL来获取图像并将其放入JSP中。这很容易通过servlet将其放在HttpServletRequest对象(JSP中的请求范围)上。例如,生成:

    <a href="http://myhost.com/image_servlet?id=1234"/>
    
    
    

    您并没有真正说明文本是什么,或者生成图像需要什么信息。如果无法将其封装在GET URL中,则可能需要添加额外的信息并将其放入HttpSession中,以便在下一个GET映像请求中检索该信息。

    您需要将映像作为字节数组写入响应的输出流。大概是这样的:

    byte[] imageBytes = getImageAsBytes();
    
    response.setContentType("image/jpeg");
    response.setContentLength(imageBytes.length);
    
    response.getOutputStream().write(imageBytes);
    
    然后在JSP中,只需使用标准的
    img
    元素:

    <img src="url to your servlet">
    
    
    
    不能在同一响应中同时返回这两种类型,因为您返回的是不同的类型(例如,类型为
    text/HTML
    的HTML页面和类型为
    image/jpeg
    的图像)

    对于这种情况,我将在初始servlet请求期间生成图像(对于包含HTML页面)。我将其存储在servlet中的缓存中,并使用图像标记编写HTML页面,图像标记包含指向该图像的URL和句柄

    e、 g.浏览器要求
    http://whatever/page

    servlet生成图像,并在页面中写入HTML标记,如

    <img src="http://whatever/image/unique_handle_to_image">
    

    请注意,围绕这些问题有许多注意事项。请参阅链接页面。

    我会按照以下思路做一些事情来实现这一点:

    在JSP页面上,您放置了一个指向图像的链接:

    <img src="servlet/path?word=value">the rest</img> 其余的 这个链接指向您的servlet,它使用请求参数生成图像,您不需要保存它,只需将其直接放入响应的输出流中即可。您必须记住禁用此servlet的浏览器缓存

    首先显示JSP页面,然后请求所有图像,它应该可以正常工作

    当然,您不应该将要显示的文本放入这样的参数中,您应该以某种方式对其进行加密或将其存储在HTTP会话中


    希望这能有所帮助。

    我在jsp页面中会有什么代码显示图像
    ...
    response.setContentType("image/jpeg");
    response.setContentLength(imageBytes.length); // imageBytes - image in bytes
    response.getOutputStream().write(imageBytes);// 
    outStream.flush();   
    outStream.close();  
    
    ...
    response.setContentType("image/jpeg");
    response.setContentLength(imageBytes.length); // imageBytes - image in bytes
    response.getOutputStream().write(imageBytes);// 
    outStream.flush();   
    outStream.close();