现在的项目需要取出oracle中的blob数据,然后输出到jsp页面中。
我用的servlet取的值,如果是图片的话,我可以用<img src="servletname">
取出,但是如果blob中是字符串的话,我怎样在jsp中显示出来。
谢谢各位!

解决方案 »

  1.   

    很正常blob只是一个byte数组,把byte数组装换成字符,就要靠Java的String类,具体什么API自己看一下:-),记得给分哦
      

  2.   

    我是想传一个输出流,不是传byte数组,比如像图片一样<img src="servletname">
    下面是取出blob数据的代码:public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("text/html");
    String modeid = "";
    /***********************************************************************
     * 接受上文传递的图片ID号
     * 
     **********************************************************************/
    try { modeid = request.getParameter("modeid");
    DBsqlconnn db=new DBsqlconnn();
        conn=db.getSqlConn();


        stmt = conn.createStatement();
    rs = stmt
    .executeQuery("select htmlval from t_zyzds_mode_html where modeid='"
    + modeid + "'");
    //System.out.println(SQLString + "asdas");
    // 执行SQL
    }// try
    catch (SQLException ex) {
    System.err.println("aq.executeUpdate:" + ex.getMessage()); }
    /***********************************************************************
     * 将流读入字符数组中,并显示到客户端
     **********************************************************************/
    try {
    if (rs.next()) {
    in = rs.getBinaryStream("htmlval");
    response.reset();// 返回在流中被标记过的位置
    // int len=in.available();//得到文件大小
    OutputStream toClient = response.getOutputStream();
    byte[] P_Buf = new byte[len];
    int i;
    while ((i = in.read(P_Buf)) != -1) {
    toClient.write(P_Buf, 0, i);
    }

    in.close();
    toClient.flush();// 强制清出缓冲区
    toClient.close();
    System.out.println("取出了流!");
    } else {
    System.out.println("系统出错");

    }
    rs.close();
    stmt.close();
    conn.close();
    System.out.println("已经清空连接资源!");
    } catch (Exception e) {
    e.printStackTrace();

                System.out.println("err,显示到客户端出错!");
            
    }