使用css的background-image从servlet显示svg

时间:2018-05-03 01:26:23

标签: java html css servlets svg

我有以下servlet代码片段:

Blob blob = rs.getBlob("ICON");
byte[] bytes = blob.getBytes(1, (int)blob.length());
response.getOutputStream().write(bytes);
response.setContentType("image/svg+xml");

和css片段: background-image: url(/IconData?type=get&iconId=6)

图像未显示。

如果我直接在浏览器中设置servlet URL,则会正确显示svg。 我在Chrome网络控制台中注意到的一件事是,访问servlet时,不会在响应头中发送image / svg + xml内容类型。

我错过了什么吗?

我测试了这个保存到DB的svg文件: usa.svg

2 个答案:

答案 0 :(得分:0)

将数据写入流后,设置标头可能为时已晚。在将数据写入流之前,需要设置Content-Type标头。

setContentType documentation部分说:

  

设置发送到客户端的响应的内容类型,如果响应尚未提交,则 。 [...]如果在提交响应后调用此方法,则此方法无效。

(强调我的。)

答案 1 :(得分:0)

粘贴到你的HTML

    content:type="image/svg" inside <header> <img> or <svg> ie <svg    
    content:type="image/svg">