struts2页面上显示图片流

从数据库获得BLOB对象,获得对象后即可关闭Hibernate的 session,在Action中将BOLB的二进制流写入从ServletActionContext获得的response中,设定 response.setContentType( "multipart/form-data" );

注意Action返回的参数应为null.

页面端代码为<img alt="图片显示区域" src="<s:url action="Image"><s:param name="pictureIndex" value="id"></s:param></s:url>"> 

struts.xml配置的Action为:<action name="Image" class="control.picture.PictureAction" method="dynamicImage"> </action>

Action中的方法为:

public String dynamicImage() throws Exception{

HttpServletResponse response=null;

   ServletOutputStream out = null;

   InputStream in = null;

   byte []bytes = null;

   try {

        response=ServletActionContext.getResponse();

        //二进制输出流

        response.setContentType( "multipart/form-data" );          

        //得到输出流

        out = response.getOutputStream();          

        //得到Blob类实例,使用.getBinaryStream()得到输入流。

        //这里的image就是blob类

        list=PictureDAO.getList(pictureIndex, 1);

         Blob image=list.get(0).getContent();

        in = image.getBinaryStream();         

        //从输入流读取数据到输出流

        bytes = new byte [ 1024 ];

        while ( -1 != in.read( bytes ) ) {

             out.write( bytes );

        }         

        //强制刷新输出流

        out.flush();

   } catch ( IOException e ) {

        e.printStackTrace();

   } catch ( Exception e ) {

        e.printStackTrace();

   } finally {

        if ( in != null ) {

             try {

                  in.close();

             } catch ( IOException e ) {

                  e.printStackTrace();

             }

        }

        if ( out != null ) try {

             out.close();

        } catch ( IOException e ) {

             e.printStackTrace();

        }

        bytes = null;

   }

   return null;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值