将图像URL从servlet发送到Web文档

时间:2011-05-23 08:37:01

标签: java javascript image servlets

我正在尝试使用javascript和servlet将图片网址发送到浏览器。

我正在做以下

在html中:

 <script type="text/javascript" src="../licenta/WebRoot/Scripts/choosebanner.js"></script>

在javascript中:

   window.onload = Onload;

   function OnLoad()
   {
   var requestURI = window.location;

   var resolution = screen.width + 'x' + screen.height;

   var colorDepth = screen.colorDepth;

    var query = '?requestURI=' + encodeURIComponent(requestURI)
          + '&resolution=' + encodeURIComponent(resolution);

    document.getElementById("body").innerHTML = "<img src ='http://dan-vaio:8080/licenta/  bannerimg.gif'" + query + " width = 500 height = 200 />";

}

在servlet中:

   public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
HttpSession session = request.getSession();
String requestURI = request.getParameter("requestURI");
String resolution = request.getParameter("resolution");
response.setContentType("text/html; charset=UTF-8");
String img = "http://dan-vaio:8080/licenta/advertiser/banners/leader.jpg";
PrintWriter out  = response.getWriter();
out.print(img);
out.close();

}

问题是我无法显示图像。 Javascript工作正常,调用服务器,服务器打印respsone,但jpg没有显示在html页面。任何提示如何使这工作?

非常感谢

3 个答案:

答案 0 :(得分:0)

我认为你想要提供图像本身,而不是它的路径。读取servlet中的映像文件,并将二进制文件写入响应。另一种方法是将javascript中的src设置为servlet的响应。但是,您需要对servlet进行Ajax调用,读取响应并将其写入img src标记中。你这样做的方式,你将img src指向一个字符串,当然不会显示图像。

答案 1 :(得分:0)

这是关于您的内容类型。您应该将响应的内容类型设置为image / jpeg。这样导航器就会明白它是一个图像。你应该改变它:

response.setContentType("image/jpeg");

如果您正在提供jpeg图片,那么请按照此方式查找您方便的内容类型:http://www.w3schools.com/media/media_mimeref.asp

答案 2 :(得分:0)

<强>步骤:

  1. 您需要将图片转换为FileInputStream
  2. 然后设置response.setContentType("image/jpeg");
  3. 示例

    FileInputStream fileIS = new FileInputStream("sample.jpg");
    response.setContentLength(fileIS.available());
    int i = 0;
    while ((i = fileIS.read()) != -1) {
      out.write(i);
    }
    fileIS.close();