取出資料庫中BASE64編碼後的圖片二進位制流資料顯示在JSP頁面上
阿新 • • 發佈:2019-02-05
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編碼後的圖片資料了。