浅谈如何调用JSP读取数据库中图片并显示在页面上

开发 后端
用JSP读取数据库中的图片并显示在页面上,这看起来没什么难得,但当初还真让笔者遇到点问题,这里为大家简单介绍下。

记得当年当当网推出时用JSP读取数据库是从Oracle里读Blob图片,显示到页面上以后怎么都是个红叉子,无奈之下请教高人,答曰:这种事情一般用Servlet搞定比较好,因为JSP读取数据库终究会被翻译成JAVA代码然后编译成class,你的JSP难免出现一些格式转换什么的代码,一旦污染到读出来的image,则红叉子在所难免了。

细想之下顿觉言之有理,Google之。果然发现很多朋友遇到过此问题,遂查之~,见有人说去掉全部空格就OK了,想想也对,就马上给代码净身(可怜我里缩外进的完美代码格式)~~

然后代码成了这副模样:

Java代码

  1. <%@ page import="java.awt.image.BufferedImage"%>   
  2. <%@ page import="java.io.BufferedInputStream"%>   
  3. <%@ page import="java.io.IOException"%>   
  4. <%@ page import="java.sql.Connection"%>   
  5. <%@ page import="java.sql.ResultSet"%>   
  6. <%@ page import="java.sql.Statement"%>   
  7. <%@ page import="java.sql.Blob"%>   
  8. <%@ page import="oracle.sql.BLOB"%>   
  9. <%@ page import="javax.naming.InitialContext"%>   
  10. <%@ page import="javax.imageio.ImageIO"%>   
  11. <%@ page import="javax.sql.DataSource"%>   
  12. <%@ page import="javax.servlet.ServletOutputStream"%>   
  13. <%@ page import="com.sun.image.codec.jpeg.JPEGCodec"%>   
  14. <%@ page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>   
  15. <%InitialContext ic=new InitialContext();   
  16. DataSource ds=(DataSource)ic.lookup("DSNAME");   
  17. Connection conn=null;   
  18. conn =ds.getConnection);   
  19. Statement stmt=null;BufferedInputStream inputimage=null;   
  20. stmt=conn.createStatement();   
  21. boolean defaultCommit=conn.getAutoCommit();   
  22. conn.setAutoCommit(false);   
  23. String photoId =request.getParameter("photo_id");   
  24. try{   
  25. ResultSet rs=stmt.executeQuery("SELECT * FROM TABLENAME WHERE sys_id='"+photoId+"'");   
  26. if(rs.next()){Blob blob=(Blob)rs.getBlob("photo");   
  27. long size=blob.length();   
  28. byte[] bs=blob.getBytes(1,(int)size);   
  29. response.setContentType("image/jpeg;charset=GB2312");   
  30. response.setHeader("Content-Transfer-Encoding","base64");   
  31. OutputStream out1=response.getOutputStream();   
  32. BufferedOutputStream bos=null;   
  33. bos=new BufferedOutputStream(out1);   
  34. bos.write(bs,0,bs.length);bos.close();   
  35. rs.close();   
  36. }   
  37. else   
  38. {   
  39. rs.close();   
  40. }}   
  41. finally{   
  42. conn.close();   
  43. }%>   

然后运行之~~,呵呵,调用JSP读取数据库中图片并显示在页面上就这样出来了~~~

【编辑推荐】

  1. 选择JSP网站空间的三点注意事项
  2. 分析JSP后台文件管理源代码
  3. MySQL手册中查到的JSP中文乱码解决方法
  4. JSP中文乱码问题的描述及解决方法
  5. 实例说明JSP打印报表的方法
责任编辑:彭凡 来源: 网易博客
相关推荐

2009-06-30 09:16:45

数据库存储JSP文件

2009-06-10 17:03:36

JSP动态生成

2009-07-07 14:56:33

JSP连接MySQL

2009-07-01 16:01:58

JSP数据库

2009-07-14 18:13:36

Microsoft J

2009-07-03 10:52:33

MIDletJSP页面

2009-07-06 15:57:56

获取数据库连接JSP

2009-07-21 13:40:24

ASP.NET上传图片显示图片

2009-05-08 09:17:48

动态数据库图片

2009-06-25 16:36:31

JBPM流程图

2009-08-11 14:51:47

C#读取Excel中数

2009-03-23 09:01:00

图片存储数据库JSP

2009-07-02 09:25:41

JSP实现页面跳转

2009-03-05 10:10:52

饼图数据库JSP

2009-06-30 15:22:55

JSP页面

2010-04-20 10:12:42

OraclePL

2011-01-18 09:47:33

自增ID

2009-07-07 11:18:59

JSP Servlet

2009-02-05 17:09:02

动态图片JSPTomcat

2009-07-07 15:07:59

JSP上传图片
点赞
收藏

51CTO技术栈公众号