淺談如何調(diào)用JSP讀取數(shù)據(jù)庫(kù)中圖片并顯示在頁(yè)面上
記得當(dāng)年當(dāng)當(dāng)網(wǎng)推出時(shí)用JSP讀取數(shù)據(jù)庫(kù)是從Oracle里讀Blob圖片,顯示到頁(yè)面上以后怎么都是個(gè)紅叉子,無(wú)奈之下請(qǐng)教高人,答曰:這種事情一般用Servlet搞定比較好,因?yàn)镴SP讀取數(shù)據(jù)庫(kù)終究會(huì)被翻譯成JAVA代碼然后編譯成class,你的JSP難免出現(xiàn)一些格式轉(zhuǎn)換什么的代碼,一旦污染到讀出來(lái)的image,則紅叉子在所難免了。
細(xì)想之下頓覺(jué)言之有理,Google之。果然發(fā)現(xiàn)很多朋友遇到過(guò)此問(wèn)題,遂查之~,見有人說(shuō)去掉全部空格就OK了,想想也對(duì),就馬上給代碼凈身(可憐我里縮外進(jìn)的完美代碼格式)~~
然后代碼成了這副模樣:
Java代碼
- <%@ page import="java.awt.image.BufferedImage"%>
- <%@ page import="java.io.BufferedInputStream"%>
- <%@ page import="java.io.IOException"%>
- <%@ page import="java.sql.Connection"%>
- <%@ page import="java.sql.ResultSet"%>
- <%@ page import="java.sql.Statement"%>
- <%@ page import="java.sql.Blob"%>
- <%@ page import="oracle.sql.BLOB"%>
- <%@ page import="javax.naming.InitialContext"%>
- <%@ page import="javax.imageio.ImageIO"%>
- <%@ page import="javax.sql.DataSource"%>
- <%@ page import="javax.servlet.ServletOutputStream"%>
- <%@ page import="com.sun.image.codec.jpeg.JPEGCodec"%>
- <%@ page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
- <%InitialContext ic=new InitialContext();
- DataSource ds=(DataSource)ic.lookup("DSNAME");
- Connection conn=null;
- conn =ds.getConnection);
- Statement stmt=null;BufferedInputStream inputimage=null;
- stmt=conn.createStatement();
- boolean defaultCommit=conn.getAutoCommit();
- conn.setAutoCommit(false);
- String photoId =request.getParameter("photo_id");
- try{
- ResultSet rs=stmt.executeQuery("SELECT * FROM TABLENAME WHERE sys_id='"+photoId+"'");
- if(rs.next()){Blob blob=(Blob)rs.getBlob("photo");
- long size=blob.length();
- byte[] bs=blob.getBytes(1,(int)size);
- response.setContentType("image/jpeg;charset=GB2312");
- response.setHeader("Content-Transfer-Encoding","base64");
- OutputStream out1=response.getOutputStream();
- BufferedOutputStream bos=null;
- bos=new BufferedOutputStream(out1);
- bos.write(bs,0,bs.length);bos.close();
- rs.close();
- }
- else
- {
- rs.close();
- }}
- finally{
- conn.close();
- }%>
然后運(yùn)行之~~,呵呵,調(diào)用JSP讀取數(shù)據(jù)庫(kù)中圖片并顯示在頁(yè)面上就這樣出來(lái)了~~~
【編輯推薦】