1. 程式人生 > >取出資料庫中BASE64編碼後的圖片二進位制流資料顯示在JSP頁面上

取出資料庫中BASE64編碼後的圖片二進位制流資料顯示在JSP頁面上

1.建立一個maven的web專案,加入oracle10/postgresql9.4驅動包依賴(本專案使用兩種資料來源進行測試)
依賴如下

<!-- Oracle驅動包 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.2.0</version>
</dependency>
<!-- Postgresql驅動包 -->
<dependency
>
<groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4-1206-jdbc41</version> </dependency>

2.建立jdbc獲取資料庫連線的工具類(未使用連線池,僅供測試)
oracle版

public class OracleConnTool{
    private static String url = "jdbc:oracle:thin:@資料庫ip地址:1521:ORCL"
; private static String user = "你的資料庫使用者名稱"; private static String pwd = "你的資料庫密碼"; public static Connection getConnection(){ Connection conn = null; try{ Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection(url,user,pwd); if
(null != conn){ System.out.println("資料庫連線成功。con是:" + conn); }else{ Systme.out.println("連線失敗!"); } }catch(Exception e){ e.printStackTrace(); } } }

Postgresql版

public class PostgresqlConnTool{
    private static String url = "jdbc:postgresql://172.10.103.77:5432/cs_tyrz?searchpath=public";
    private static String user = "cs_tyrz";
    private static String pwd = "cs_tyrz";

    public static Connection getConnection(){
    Connection conn = null;
        try{
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection(url,user,pwd);
            if(null != conn){
                System.out.println("資料庫連線成功。con是:" + conn);
            }else{
                Systme.out.println("連線失敗!");
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

3.建立一個Servlet測試使用
僅貼出doGet方法了

@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
    String sql = "select * from DATA_11";
    Statement pstmt = null;
    Connection conn = PostgresqlConnTool.getConnection();
    try{
        pstmt = conn.createStatement();
        ResultSet rs = pstmt.executeQuery(sql);
        rs.next();//只讀一條測試資料出來。
        InputStream is = rs.getBinaryStream("xp");
        System.out.println(is.toString());

        resp.setContentType("image/*");
        ServletOutputStream os = resp.getOutputStream();
        //注意這裡BASE64Decoder需要設定一下build path,CSDN部落格裡的教程  http://blog.csdn.net/weixin_35852328/article/details/78557275
        byte[] deis = new sun.misc.BASE64Decoder().decodeBuffer(is); 
        os.write(deis);

        os.close();
        is.close();
        rs.close();
    }catch (Exception e){
        e.printStackTrace();
    }finally{
        try{
            pstmt.close();
        }catch(Excetion e){
            e.printStackTrace();
        }
    }
}

4.jsp頁面

<img src="你寫的servlet名稱">

5.沒有意外的話就可以顯示你存在資料庫的 Base64編碼後的圖片資料了。