我在做现实图片的时候遇见这样的问题: 
第一种出错方式:在struts2的action中写上这个方法: 
public void showImg(){ HttpServletResponse response = ServletActionContext.getResponse(); 
ServletOutputStream out = null; 
FileCtrl file = this.fileService.getFileDao().getFileById(this);//方便测试,直接调dao查出图片 
try { 
out = response.getOutputStream(); 
byte[] len = new byte[1024]; 
while(true){ 
int size = file.getImage().getBinaryStream().read(len); 
if( -1 == size ){ 
break; 

out.write(len); 
} } catch (Exception e) { 
e.printStackTrace(); 
}finally{ 
try { 
out.close(); 
} catch (IOException e) { 
e.printStackTrace(); 


             } 
在页面使用连接 
<a href="fileCtrl!showImg.action?id=<s:property value="id"/>">打开图片</a> 
它就报这样一个异常:Caused by: java.net.SocketException: Connection reset by peer: socket write error 
问题出在while循环中的out.write(len);调试过,它循环好多次才抛出的异常,不知道怎么解决! 
-------------------------------------------------------------------------------------------- 
遇见问题后,我想使用另一种方法 
直接在页面写jsp代码显示图片,方法如下: 
                                InputStream is = file.getImage().getBinaryStream(); 
response.setContentType("image/jpeg"); 
    response.setContentLength(is.available()); 
    while(true){ 
    int size = is.read(); 
if( -1 == size ){ 
break; 

out.write(size);  

    is.close(); 
这样的话,显示出来全是乱码! 
请问要如何解决从数据库中读取图片并显示!