從數據庫中讀出圖片并顯示的示例代碼
?
??1
<?!--?--?--?--servlet--?--?--?--?-->
??2
package?Photo;
??3
import?javax.servlet.*;
??4
import?javax.servlet.http.*;
??5
import?java.io.*;
??6
import?java.util.*;
??7
import?java.lang.*;
??8
import?java.sql.*;?
??9
/**?*//**
?10
*?<p>Title:?</p>
?11
*?<p>Description:?</p>
?12
*?<p>Copyright:?Copyright?(c)?2002</p>
?13
*?<p>Company:?</p>
?14
*?@author?unascribed
?15
*?@version?1.0
?16
*/
?17
?18
public?class?ShowImage?extends?HttpServlet?
{
?19
private?static?final?String?CONTENT_TYPE?=?"image/*";
?20
/**?*//**
?21
*?定義數據庫連接字符串,jdbc.odbc橋
?22
*/
?23
private?String?driver_class?=?"oracle.jdbc.driver.OracleDriver";
?24
private?String?connect_string?=
?25
"jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL";
?26
Connection?conn?=?null;
?27
ResultSet?rs?=?null;
?28
Statement?stmt?=?null;
?29
/**?*//********************************************
?30
*?定義應用變量
?31
******************************************/
?32
private?String?SQLString?=?"";?//定義查詢語句\\r
?33
public?String?M_EorrMenage?=?"";?//定義錯誤信息變量
?34
private?InputStream?in?=?null;?//定義輸入流\\r
?35
private?int?len?=?10?*?1024?*?1024;?//定義字符數組長度
?36
?37
//Initialize?global?variables
?38
public?void?init()?throws?ServletException?
{
?39
/**?*//**
?40
*?連接數據庫\\r
?41
*/
?42
try?
{
?43
Class.forName(driver_class);
?44
}?catch?(java.lang.ClassNotFoundException?e)?
{
?45
//異常
?46
System.err.println("databean():"?+?e.getMessage());
?47
}
?48
}
?49
//Process?the?HTTP?Get?request
?50
public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
?51
throws?ServletException,?IOException?
{
?52
response.setContentType(CONTENT_TYPE);
?53
PrintWriter?out?=?response.getWriter();
?54
//在數據庫中的照片的ID
?55
int?PHOTOID?=?0;
?56
/**?*//*********************************************
?57
*?接受上文傳遞的圖片ID號
?58
*?上文傳輸文件名稱為photoid
?59
*********************************************/
?60
try?
{
?61
?62
PHOTOID?=?Integer.parseInt(request.getParameter("photoid"));
?63
SQLString?=?"select?*?from?xxw_photo?where?p_id="?+?PHOTOID;
?64
?65
}?catch?(Exception?e)?
{
?66
e.printStackTrace();
?67
response.setContentType("text/html;?charset=gb2312");
?68
M_EorrMenage?=?"請輸入圖片ID號";
?69
M_EorrMenage?=
?70
new?String(M_EorrMenage.getBytes("ISO8859_1"),?"GBK");
?71
out.println("<%@?page?contentType=\'text/html;?charset=gb2312\'?%>");
?72
out.println("<html>");
?73
out.println("<head><title>id</title></head>");
?74
out.println("<body>");
?75
out.println("<p>"?+?M_EorrMenage?+?"</p>");
?76
out.println("</body></html>");
?77
?78
}
?79
/**?*//*****************************************************
?80
*?執行查詢語句\\r
?81
*****************************************************/
?82
try?
{
?83
conn?=?DriverManager.getConnection(connect_string);
?84
stmt?=?conn.createStatement();
?85
rs?=?stmt.executeQuery(SQLString);
?86
}?//try
?87
catch?(SQLException?ex)?
{
?88
System.err.println("aq.executeUpdate:"?+?ex.getMessage());
?89
M_EorrMenage?=?"對不起,數據庫無法完成此操作!";
?90
M_EorrMenage?=
?91
new?String(M_EorrMenage.getBytes("ISO8859_1"),?"GBK");
?92
response.setContentType("text/html;?charset=gb2312");
?93
out.println("<html>");
?94
out.println("<head><title>no_database</title></head>");
?95
out.println("<body>");
?96
out.println("<p>"?+?M_EorrMenage?+?"</p>");
?97
out.println("</body></html>");
?98
?99
}
100
/**?*//*********************************************
101
*?將圖片流讀入字符數組中,并顯示到客戶端
102
********************************************/
103
try?
{
104
if?(rs.next())?
{
105
in?=?rs.getBinaryStream("photo");
106
response.reset();?//返回在流中被標記過的位置
107
response.setContentType("image/jpg");?//或gif等
108
//?int?len=in.available();//得到文件大小
109
OutputStream?toClient?=?response.getOutputStream();
110
byte[]?P_Buf?=?new?byte[len];
111
int?i;
112
while?((i?=?in.read(P_Buf))?!=?-1)?
{
113
toClient.write(P_Buf,?0,?i);
114
}
115
in.close();
116
toClient.flush();?//強制清出緩沖區\\r
117
toClient.close();
118
}?else?
{
119
M_EorrMenage?=?"無此圖片!";
120
M_EorrMenage?=
121
new?String(M_EorrMenage.getBytes("ISO8859_1"),?"GBK");
122
response.setContentType("text/html;?charset=gb2312");
123
out.println("<html>");
124
out.println(
125
"<head><title>this?photo?isn\'t?have</title></head>");
126
out.println("<body>");
127
out.println("<p>"?+?M_EorrMenage?+?"</p>");
128
out.println("</body></html>");
129
}
130
rs.close();
131
}?catch?(Exception?e)?
{
132
e.printStackTrace();
133
M_EorrMenage?=?"無法讀取圖片!";
134
M_EorrMenage?=
135
new?String(M_EorrMenage.getBytes("ISO8859_1"),?"GBK");
136
response.setContentType("text/html;?charset=gb2312");
137
out.println("<%@?page?contentType=\'text/html;?charset=gb2312\'?%>");
138
out.println("<html>");
139
out.println("<head><title>no?photo</title></head>");
140
out.println("<body>");
141
out.println("<p>"?+?M_EorrMenage?+?"</p>");
142
out.println("</body></html>");
143
}
144
}
145
146
//Clean?up?resources
147
public?void?destroy()?
{
148
try?
{
149
conn.close();
150
}?catch?(SQLException?e)?
{
151
System.err.println("aq.executeUpdate:"?+?e.getMessage());
152
M_EorrMenage?=?"對不起,數據庫無法完成此操作!";
153
}
154
}
155
}
156
157

??2

??3

??4

??5

??6

??7

??8

??9


?10

?11

?12

?13

?14

?15

?16

?17

?18



?19

?20


?21

?22

?23

?24

?25

?26

?27

?28

?29


?30

?31

?32

?33

?34

?35

?36

?37

?38



?39


?40

?41

?42



?43

?44



?45

?46

?47

?48

?49

?50

?51



?52

?53

?54

?55

?56


?57

?58

?59

?60



?61

?62

?63

?64

?65



?66

?67

?68

?69

?70

?71

?72

?73

?74

?75

?76

?77

?78

?79


?80

?81

?82



?83

?84

?85

?86

?87



?88

?89

?90

?91

?92

?93

?94

?95

?96

?97

?98

?99

100


101

102

103



104



105

106

107

108

109

110

111

112



113

114

115

116

117

118



119

120

121

122

123

124

125

126

127

128

129

130

131



132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147



148



149

150



151

152

153

154

155

156

157

?
?1
<!---------------------------顯示---------------------------------------------->
?2
<html>
?3
<head>
?4
<title>Untitled?Document</title>
?5
</head>
?6
<body?bgcolor="#FFFFFF"?text="#000000">
?7
<table>
?8
<%
?9
int?i=1;
10
while(i<3)
{
11
%>
12
<tr>?
13
<td?colspan="3">?<img?border="1"?src="http://192.168.1.50:8100/ShowImage?photoid=<;%=i%>"></td>
14
</tr>
15
<%
16
i++;
17
}
18
%>
19
</table>
20
</body>
21
</html>
22

?2

?3

?4

?5

?6

?7

?8

?9

10



11

12

13

14

15

16

17

18

19

20

21

22

注:此程序對于從數據庫讀取圖片后寫入文件請參考代碼者留意
來自:http://18839.com/Edu/A11/11007/5/2005120579783.html