快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

JSP显示图片问题的解决

前提:使用JSP显示图片。图片的存储位置在数据库中。

  方式:用JDBC连接数据库,从数据库读出数据,用输出流输出到页面。

<%@ page contentType="text/html" language="java" %>
<%@ page buffer="16kb" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<% int len = 10 * 1024 * 1024;
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@10.168.8.99:1521:orafy"; //orcl为你的数据库的SID String user="lhzy";
String password="qwertyuiop";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select pic from test";
ResultSet rs=stmt.executeQuery(sql); //定位到记录 rs.next();
InputStream in = rs.getBinaryStream(1);//①
response.reset(); //返回在流中被标记过的位置
response.setContentType("image/jpg"); //或gif等 //得到输入流
OutputStream toClient = response.getOutputStream();//②
byte[] P_Buf = new byte[len];
int i;
while ((i = in.read(P_Buf)) != -1)
{
toClient.write(P_Buf, 0, i);
} in.close();
toClient.flush(); //强制清出缓冲区
toClient.close();//②
%>
<% rs.close();
stmt.close();
conn.close(); %>

  需要注重的地方:

  需要注重的有两个方面:①处的代码如注重的是,在去记录前要先调用next()函数,定位到第一个记录,记录中列的索引是从1开始的,不是从0 开始。 ②处假如出错,检查是不是忘记写流的关闭了。就是下面的那句。原因可能是,在其它的地方也调用了response.getOutputStread()。假如不关闭,这个调用是不能成功的。
返回类别: 教程
上一教程: JAVABEAN实现多文件上传的两种方式
下一教程: SERVLET中JDBC应用高级篇

您可以阅读与"JSP显示图片问题的解决"相关的教程:
· JSP显示中文问题的解决方案
· JSP页面显示乱码问题的解决
· Mysql与JSP网页中文乱码问题的解决方案
· JSP中文乱码问题的解决.
· 解决JSP中文显示问题的几个方式
    微笑服务 优质保证 索取样品