Необходимо создать в БД таблицу test с полями id number, bl blob.
В данном примере используется Oracle.
Аналогичным образом можно из сервлета любые другие бинарные файлы.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import oracle.sql.*;
public class ImageFileServlet extends HttpServlet
{
private static final String CONTENT_TYPE = "image/jpeg";
private final String sql = "select bl from test where id=\'1\'";
private final String DATABASE_URL = "Здесь URL базы данных";
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
response.addHeader("Content-Disposition", "attachment; filename=img.jpg");
OutputStream out = response.getOutputStream();
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(DATABASE_URL);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
rs.next();
BLOB blob = (BLOB) rs.getBlob(1);
InputStream is = blob.binaryStreamValue();
int i;
while((i=is.read())!=-1)
out.write((byte) i);
out.flush();
rs.close();
st.close();
conn.close();
} catch (Exception e){e.printStackTrace();}
out.close();
}
}