注册 登录
编程论坛 J2EE论坛

【求助】servlet传来的图片不显示

冰弦冷瑟 发布于 2009-11-07 09:41, 1647 次点击
    本地F盘有一个“Picture“文件夹,文件夹里有10张图片,依次命名为0.jpg、1.jpg、3.jpg……9.jpg。我想实现点击按钮随机切换图片的功能,将0~9间的随机数(num)作为参数传到servlet,然后在servlet中读取图片并输出。在前台将<img />的src属性指定为servlet路径来显示图片。但是图片显示不出来,不知哪里出了问题,向各位高手求教,万分感谢!
    html部分:
    <input type="button" value="Show“ onlick="getImage()" />
    <img id="image" src="" style="display:none" />
    javascript部分:
    function getImage(){
        var num=Math.floor(Math.random()*10);    //获得1~9的随机数
      var xmlhttp;
        xmlhttp=new ActiveXObject("Microsoft.XMLHttp");
      xmlhttp.open("get","servlet/PictureServlet?num="+num+"&time="+new Date().getTime(),true);  
      xmlhttp.send(null);
      xmlhttp.onreadystatechange=function(){
            if(xmlhttp.readyState==4 && xmlhttp.status==200){
                document.getElementById("image").style.display="block";    //响应完毕后,将图片设为“显示”状态
             document.getElementById("image").src="http://localhost:8080/Picture/servlet/PictureServlet";
            }
        }
    }
    servlet部分:
    response.setContentType("image/jpeg");
    int num=Integer.parseInt(request.getParameter("num"));    //获取参数
    String url="F:\\Picture\\"+num+".jpg";    //图片文件路径
    FileInputStream hFile=new FileInputStream(url);    //创建读取流
    int length=hFile.available();    //获得这个文件流的长度
    byte[] b=new byte[length];    //创建一个长度等于文件流长度的二进制数组
    hFile.read(b);    //读取二进制数据,存入数组
  hFile.close();    //关闭文件流
    OutputStream out=response.getOutputStream();    //获得向客户端输出二进制数据的对象
    out.write(b);    //输出数据
    out.close();    //关闭输出对象
4 回复
#2
lampeter1232009-11-07 09:53
显示不是Servlet强项,一般用JSP来显示
#3
baifenghan2009-11-09 18:48
建议换一个浏览器试试,其实不是什么大问题,以前记得IE是有点问题,在FF中试试;
同意2楼的看法,这个工作是应该交给JSP去做;
还有就是你那个IO的操作,像这种流之间的交互,建议还是使用nio中的channle,更好。
#4
zhong07111012009-12-02 21:46
同意2楼的看法,这个工作是应该交给JSP去做;
#5
xiaochen20032010-01-25 18:28
1