浅谈如何调用JSP读取数据库中图片并显示在页面上
创始人
2024-04-09 16:01:51
0

记得当年当当网推出时用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打印报表的方法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...