2 java postgresql jsp servlets
给定一个对象X; 我希望这个对象有一个图像.图像必须存储在数据库中.我无法存储路径,实际图像必须在数据库中.
回答以下问题可以回答我的问题:
一个).我应该在数据库中放入什么类型的字段?(例如VARCHAR)
b)我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image)
c)如何从数据库中获取的数据创建所选类型的对象(问题b的答案)?
d)如何将所选类型的对象(问题b的答案)保存到数据库?
e)如何在网页上绘制图像?
我正在使用PostgreSQL,Java,它是一个Web应用程序.
谢谢!
a)我应该在数据库中放入什么类型的字段?(例如VARCHAR)
图像是二进制数据.只需使用二进制字段.在PostgreSQL中它是bytea.
b)我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image)
使用InputStream或byte[]存储它.Java 2D API具有可以接受/返回这些类型的类/方法.
c)如何从数据库中获取的数据创建所选类型的对象(问题b的答案)?
使用ResultSet#getBinaryStream()得到一个InputStream它或ResultSet#getBytes()得到byte[]它.
d)如何将所选类型的对象(问题b的答案)保存到数据库?
使用PreparedStatement#setBinaryStream()或PreparedStatement#setBytes().注意:如果您还是JDBC /的新手PreparedStatement,那么我建议您学习Sun基础JDBC教程.
e)如何在网页上绘制图像?
使用HTML <img>元素,其src指向匹配的URL url-pattern的Servlet.您可以将图像标识符作为请求参数或pathinfo传递.里面的Servlet你只写所获得InputStream的OutputStream响应通常的Java IO方式.你可以在我之前发布的这个答案中找到一个代码示例.
也就是说,仅将原始图像存储在数据库中通常不是一个好主意.您最好还应该在其中存储一些元数据,例如您在响应头中需要的内容类型(例如image/jpeg,image/gif等),以便浏览器知道如何处理它.