posts - 6, comments - 8, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
从数据库中读出图片并显示的示例代码

 

  1< !-- -- -- --servlet-- -- -- -- -->
  2package Photo;
  3import javax.servlet.*;
  4import javax.servlet.http.*;
  5import java.io.*;
  6import java.util.*;
  7import java.lang.*;
  8import 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
 18public class ShowImage extends HttpServlet {
 19private static final String CONTENT_TYPE = "image/*";
 20/**
 21* 定义数据库连接字符串,jdbc.odbc桥
 22*/

 23private String driver_class = "oracle.jdbc.driver.OracleDriver";
 24private String connect_string =
 25"jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL";
 26Connection conn = null;
 27ResultSet rs = null;
 28Statement stmt = null;
 29/********************************************
 30* 定义应用变量
 31******************************************/

 32private String SQLString = ""//定义查询语句\\r
 33public String M_EorrMenage = ""//定义错误信息变量
 34private InputStream in = null//定义输入流\\r
 35private int len = 10 * 1024 * 1024//定义字符数组长度
 36
 37//Initialize global variables
 38public void init() throws ServletException {
 39/**
 40* 连接数据库\\r
 41*/

 42try {
 43Class.forName(driver_class);
 44}
 catch (java.lang.ClassNotFoundException e) {
 45//异常
 46System.err.println("databean():" + e.getMessage());
 47}

 48}

 49//Process the HTTP Get request
 50public void doGet(HttpServletRequest request, HttpServletResponse response)
 51throws ServletException, IOException {
 52response.setContentType(CONTENT_TYPE);
 53PrintWriter out = response.getWriter();
 54//在数据库中的照片的ID
 55int PHOTOID = 0;
 56/*********************************************
 57* 接受上文传递的图片ID号
 58* 上文传输文件名称为photoid
 59*********************************************/

 60try {
 61
 62PHOTOID = Integer.parseInt(request.getParameter("photoid"));
 63SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
 64
 65}
 catch (Exception e) {
 66e.printStackTrace();
 67response.setContentType("text/html; charset=gb2312");
 68M_EorrMenage = "请输入图片ID号";
 69M_EorrMenage =
 70new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
 71out.println("<%@ page contentType=\'text/html; charset=gb2312\' %>");
 72out.println("<html>");
 73out.println("<head><title>id</title></head>");
 74out.println("<body>");
 75out.println("<p>" + M_EorrMenage + "</p>");
 76out.println("</body></html>");
 77
 78}

 79/*****************************************************
 80* 执行查询语句\\r
 81*****************************************************/

 82try {
 83conn = DriverManager.getConnection(connect_string);
 84stmt = conn.createStatement();
 85rs = stmt.executeQuery(SQLString);
 86}
 //try
 87catch (SQLException ex) {
 88System.err.println("aq.executeUpdate:" + ex.getMessage());
 89M_EorrMenage = "对不起,数据库无法完成此操作!";
 90M_EorrMenage =
 91new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
 92response.setContentType("text/html; charset=gb2312");
 93out.println("<html>");
 94out.println("<head><title>no_database</title></head>");
 95out.println("<body>");
 96out.println("<p>" + M_EorrMenage + "</p>");
 97out.println("</body></html>");
 98
 99}

100/*********************************************
101* 将图片流读入字符数组中,并显示到客户端
102********************************************/

103try {
104if (rs.next()) {
105in = rs.getBinaryStream("photo");
106response.reset(); //返回在流中被标记过的位置
107response.setContentType("image/jpg"); //或gif等
108// int len=in.available();//得到文件大小
109OutputStream toClient = response.getOutputStream();
110byte[] P_Buf = new byte[len];
111int i;
112while ((i = in.read(P_Buf)) != -1{
113toClient.write(P_Buf, 0, i);
114}

115in.close();
116toClient.flush(); //强制清出缓冲区\\r
117toClient.close();
118}
 else {
119M_EorrMenage = "无此图片!";
120M_EorrMenage =
121new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
122response.setContentType("text/html; charset=gb2312");
123out.println("<html>");
124out.println(
125"<head><title>this photo isn\'t have</title></head>");
126out.println("<body>");
127out.println("<p>" + M_EorrMenage + "</p>");
128out.println("</body></html>");
129}

130rs.close();
131}
 catch (Exception e) {
132e.printStackTrace();
133M_EorrMenage = "无法读取图片!";
134M_EorrMenage =
135new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
136response.setContentType("text/html; charset=gb2312");
137out.println("<%@ page contentType=\'text/html; charset=gb2312\' %>");
138out.println("<html>");
139out.println("<head><title>no photo</title></head>");
140out.println("<body>");
141out.println("<p>" + M_EorrMenage + "</p>");
142out.println("</body></html>");
143}

144}

145
146//Clean up resources
147public void destroy() {
148try {
149conn.close();
150}
 catch (SQLException e) {
151System.err.println("aq.executeUpdate:" + e.getMessage());
152M_EorrMenage = "对不起,数据库无法完成此操作!";
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<%
 9int i=1;
10while(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<%
16i++;
17}

18%>
19</table>
20</body>
21</html>
22


注:此程序对于从数据库读取图片后写入文件请参考代码者留意
来自:http://18839.com/Edu/A11/11007/5/2005120579783.html


只有注册用户登录后才能发表评论。


网站导航: