mysql中图片在jsp页面中的显示_把mysql读取的图片显示在jsp 页面上

先创建数据库 如: create table bcctphoto( photoid int primary key auto_increment, photoname varchar(50) NOT NULL, photo blob ); 2把show.jsp放在tomcat的任意目录下. show.jsp作用:从数据库中读出blob,并产生image/jpg. show.jsp文件如下: %@ page c

先创建数据库

如:

create table bcctphoto(

photoid int primary key auto_increment,

photoname varchar(50) NOT NULL,

photo blob

);

<2>把show.jsp放在tomcat的任意目录下. show.jsp作用:从数据库中读出blob,并产生image/jpg.

show.jsp文件如下:

String photo_no = request.getParameter("photo_no");

//mysql连接

Class.forName("com.mysql.jdbc.Driver").newInstance();

String URL="jdbc:mysql://localhost:3306/bigdate?user=root&password=mysqladmin";

Connection con = DriverManager.getConnection(URL);

//oracle连接

//String URL="jdbc:oracle:thin@localhost:1521:orcl2";

//user="system";

//password="manager";

//Connection con = DriverManager.getConnection(URL,user,password);

try{

// 准备语句执行对象

Statement stmt = con.createStatement();

String sql = " SELECT * FROM PHOTO WHERE photo_no = "+ photo_no;

ResultSet rs = stmt.executeQuery(sql);

if (rs.next()) {

Blob b = rs.getBlob("photo_image");

long size = b.length();

//out.print(size);

byte[] bs = b.getBytes(1, (int)size);

response.setContentType("image/jpeg");

OutputStream outs = response.getOutputStream();

outs.write(bs);

outs.flush();

rs.close();

}

else {

rs.close();

response.sendRedirect("./images/error.gif");

}

}

finally{

con.close();

}

%>

<3>把如下文件放在show.jsp的同一目录下.

index.html文件如下:

图像测试

图像测试

show.jsp?photo_no=2

异常处理: 如果出现 getOutputStream() has already been called for this response

异常解析:这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和response.getOutputStream()相冲突的!所以会出现以上这个异常。然后当然是要提出解决的办法,其实挺简单的,在使用完输出流以后调用以下两行代码即可:

解决方法:添加代码

out.clear();

out = pageContext.pushBody();

如下代码:

//注意看以下几句的使用

outs.flush();

outs.close();

outs=null;

response.flushBuffer();

out.clear();

out = pageContext.pushBody();

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值