当前位置:编程学习 > JAVA >>

大家帮看看这个空指针错误的show.jsp代码,在我的数据库中存的Blob类型的图片,我想读取它并显示为图片,用以下代码

mysql数据库连接测试成功,但进入页面就无法显示图片,
<%@page import="ytl.DBUtil"%><%@ page contentType="text/html; charset=gbk" %> 
<%@ page import="java.io.*"%> 
<%@ page import="java.sql.*, javax.sql.*" %> 
<%@ page import="java.util.*"%> 
<%@ page import="java.math.*"%> 
<%@ page import="ytl.*"%> 
<%
String number = request.getParameter("number");
String type = request.getParameter("type");
if(type != null){
if(type.equals("mstx_image")){
OutputStream outs = null;
try{
ArrayList<MSTXImage> myMSTXImages = DBUtil.getMSTXImage(Integer.parseInt(number));
if(!myMSTXImages.isEmpty()){
MSTXImage mi = myMSTXImages.get(0);
Blob b = mi.getB();
long size = b.length();
byte[] bs = b.getBytes(1, (int)size);
/*
System.out.println(bs.length+"=============");
int c = 0;
for(int i=0; i<bs.length; i++){
System.out.print(bs[i]);
if(c == 9){
System.out.println();
}
c = (c+1)%10;
}
*/
response.setContentType("image/jpeg");
if(outs == null){
outs = response.getOutputStream();//得到流
}
outs.write(bs);//输出
outs.flush(); 
out.clear();//必须加上,否则会异常
out = pageContext.pushBody(); 
}

catch(Exception e){//捕获异常
e.printStackTrace();//打印异常
}
finally{//关闭
try{
if(outs != null){
outs.close();//关闭流
outs = null;
}
}
catch(Exception e){//捕获异常
e.printStackTrace();//打印异常 
}
}
}
else if(type.equals("mstx_ads_image")){//显示管理界面广告
OutputStream outs = null;
try{
Blob myMSTXImages = DBUtil.getMstxAdsImageByGpid(Integer.parseInt(number));
long size = myMSTXImages.length();
byte[] bs = myMSTXImages.getBytes(1, (int)size);
response.setContentType("image/jpeg");
if(outs == null){
outs = response.getOutputStream();//得到流
}
outs.write(bs);//输出
outs.flush(); 
out.clear();//必须加上,否则会异常
out = pageContext.pushBody();

catch(Exception e){//捕获异常
e.printStackTrace();//打印异常
}
finally{//关闭
try{
if(outs != null){
outs.close();//关闭流
outs = null;
}
}
catch(Exception e){//捕获异常
e.printStackTrace();//打印异常 
}
}
}
else if(type.equals("mstx_head")){//显示头像
OutputStream outs = null;
try{
ArrayList<MSTXHeadImage> myMSTXImages = DBUtil.getHeadImage(Integer.parseInt(number));
if(!myMSTXImages.isEmpty()){
MSTXHeadImage mi = myMSTXImages.get(0);
Blob b = mi.getB();
long size = b.length();
byte[] bs = b.getBytes(1, (int)size);
response.setContentType("image/jpeg");
if(outs == null){
outs = response.getOutputStream();//得到流
}
outs.write(bs);//输出
outs.flush(); 
out.clear();//必须加上,否则会异常
out = pageContext.pushBody(); 
}

catch(Exception e){//捕获异常
e.printStackTrace();//打印异常
}
finally{//关闭
try{
if(outs != null){
outs.close();//关闭流
outs = null;
}
}
catch(Exception e){//捕获异常
e.printStackTrace();//打印异常 
}
}
}
}
%>
数据库 null import exception byte --------------------编程问答-------------------- 看到这种狂贴代码就头疼;眼花。飘过。。。。逛其他的去。
给你一个读取图片显示的代码;你自己去看看整理到自己的代码中;你的代码真的不想看。。。。。

ServletOutputStream out = response.getOutputStream(); 
InputStream input = “数据库查询出的image”;
 int i = 0;  
 while ((i = input.read()) != -1) {  
out.write(i);  
 }  

out.flush();  
out.close(); 

页面显示的时候<img src="指向这个方法的地址">

--------------------编程问答-------------------- 不建议用流存/取图片


直接在项目的某个位置建个文件夹,把图片穿进去多好啊啊 --------------------编程问答--------------------
引用 2 楼 xb12369 的回复:
不建议用流存/取图片


直接在项目的某个位置建个文件夹,把图片穿进去多好啊啊
我对哥们的解决方案很感兴趣,怎么解决啊??详细点,我以前都是用流的 --------------------编程问答--------------------
引用 3 楼 li951418089 的回复:
引用 2 楼 xb12369 的回复:不建议用流存/取图片


直接在项目的某个位置建个文件夹,把图片穿进去多好啊啊我对哥们的解决方案很感兴趣,怎么解决啊??详细点,我以前都是用流的


存图片路径。
不过还是看具体需求。 --------------------编程问答--------------------
引用 3 楼 li951418089 的回复:
引用 2 楼 xb12369 的回复:不建议用流存/取图片


直接在项目的某个位置建个文件夹,把图片穿进去多好啊啊我对哥们的解决方案很感兴趣,怎么解决啊??详细点,我以前都是用流的

项目下建个文件夹  图片上传到指定文件夹  在数据库内只存图片路径 页面直接引用 --------------------编程问答--------------------
引用 5 楼 luojitao1020 的回复:
引用 3 楼 li951418089 的回复:引用 2 楼 xb12369 的回复:不建议用流存/取图片


直接在项目的某个位置建个文件夹,把图片穿进去多好啊啊我对哥们的解决方案很感兴趣,怎么解决啊??详细点,我以前都是用流的
项目下建个文件夹  图片上传到指定文件夹  在数据库内只存图片路径 页面直接引用


存储图片;应该将图片上传到服务器的某个目录下面。然后再tomcat中配置映射。访问图片;不赞成直接保存在项目的某个目录。原因和各种不方便    你懂得 --------------------编程问答-------------------- 是美食天下不?我也遇到一样问题了,求解~~~
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,