设为首页收藏本站
开启辅助访问
切换到宽版

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 4948|回复: 0
打印 上一主题 下一主题

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

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-12-13 20:10:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
记得当年当当网推出时用JSP读取数据库是从Oracle里读Blob图片,显示到页面上以后怎么都是个红叉子,无奈之下请教高人,答曰:这种事情一般用Servlet搞定比较好,因为JSP读取数据库终究会被翻译成JAVA代码然后编译成class,你的JSP难免出现一些格式转换什么的代码,一旦污染到读出来的image,则红叉子在所难免了。
细想之下顿觉言之有理,Google之。果然发现很多朋友遇到过此问题,遂查之~,见有人说去掉全部空格就OK了,想想也对,就马上给代码净身(可怜我里缩外进的完美代码格式)~~
然后代码成了这副模样:
  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读取数据库中图片并显示在页面上就这样出来了~~~

from:http://go.cxweb.com.cn/s0uj4
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-9-22 07:39 , Processed in 0.078147 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表