我正在尝试将存储在Web应用程序文件夹中的所有图像移动到数据库中。并用servlet调用它们。是否可以从我的CSS调用servlet?或者有没有办法从css ??
调用远程存储的图像文件我试图从CSS调用servlet方法。但是无法成功。是否可以调用这样的方法?
background-image:url(servlet / com.abc.servlet.GetImage?name = home& GetImage('abc','123'));
答案 0 :(得分:5)
是。只要图像有网址,就可以在你的CSS中使用它。
例如:
background-image:url('/getimage.ashx?id=3');
您甚至可以更进一步重新路由他们的网址 - 您甚至可以使用您今天使用的相同网址,但让服务器处理请求并从数据库加载文件。
另一个提示:确保设置正确的标题。您希望使用正确的内容类型,并且可能希望在客户端正确缓存图像。
答案 1 :(得分:5)
是。指定图像的CSS规则可以包含浏览器可以解析和获取的任何类型的URL:
body {
background-image:
url(http://www.domain.com/servlets/my_servlet.jsp?argument=value)
}
答案 2 :(得分:2)
有可能。只需在这里创建一个像this example这样的imageservlet。到目前为止,只需ResultSet#getBinaryStream()
从数据库获取InputStream
的图像,并将其写入HttpServletResponse#getOutputStream()
usual Java IO way获得的响应的OutputStream
。不要忘记添加HTTP内容类型和内容长度标头。如果省略内容类型,则浏览器不知道如何处理该信息。如果省略内容长度,它将使用分块传输编码发送,这会降低效率。
至于引用CSS文件中的servlet,只需指定CSS文件的URL relative 即可。这样您就不必担心上下文路径了。确定相对URL并不难,它的工作方式与在命令控制台中访问本地磁盘文件系统路径的方式相同。 cd ../../foo/bar/file.ext
等等。你在学校学过这个,是吗?
好的,假设imageservlet位于http://example.com/context/image?id=x
并且CSS文件位于http://example.com/context/css/globalstyle.css
(因此,当前文件夹为css
),然后是右侧相对URL CSS文件中的imageservlet将是:
background-image: url('../image?id=123');
../
在目录结构中向后退一步,以便您从文件夹http://example.com/context/css
转到http://example.com/context
。如果你仍然很难确定正确的相对路径,那么让我们知道servlet和CSS文件的绝对 URL,然后我们将为你提取正确的相对路径。 / p>