package uiresources; import java.io.BufferedInputStream; import java.io.IOException; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; public class ImageServlet extends HttpServlet { private static final String CONTENT_TYPE = "image/jpg; charset=utf-8"; 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.setContentType(CONTENT_TYPE); String detailProductId = request.getParameter("detail"); String thumbnailProductId = request.getParameter("thumbnail"); boolean thumbnail = true; String productId = null; OutputStream os = response.getOutputStream(); Connection conn = null; try { Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/FODDS"); conn = ds.getConnection(); PreparedStatement statement = conn.prepareStatement( "SELECT ProductImageEO.PRODUCT_IMAGE_ID, " + " ProductImageEO.PRODUCT_ID, " + " ProductImageEO.DEFAULT_VIEW_FLAG, " + " ProductImageEO.DETAIL_IMAGE_ID, " + " ProductImageEO.IMAGE " + "FROM PRODUCT_IMAGES ProductImageEO " + "WHERE ProductImageEO.DEFAULT_VIEW_FLAG = ?" + " AND ProductImageEO.PRODUCT_ID = ?"); if (detailProductId != null) { productId = detailProductId; thumbnail = false; } else { productId = thumbnailProductId; } statement.setString(1,(thumbnail ? "Y" : "N")); statement.setInt(2, new Integer(productId)); ResultSet rs = statement.executeQuery(); if (rs.next()) { Blob blob = rs.getBlob("IMAGE"); BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream()); int b; byte[] buffer = new byte[10240]; while ((b = in.read(buffer, 0, 10240)) != -1) { os.write(buffer, 0, b); } os.close(); } } catch (Exception e){ System.out.println(e); } finally { try{ if (conn != null){ conn.close(); } } catch (SQLException sqle){ System.out.println("SQLException error"); } } } }
2009年1月19日星期一
JSF_019:一个读取BLOB中图片的Servlet代码
说明:本代码来源于Oracle FOD Demo,仅供参考学习。
标签:
Java
订阅:
博文评论 (Atom)
没有评论:
发表评论