CODE: 
?qCLAy}zv  --------------------------------------------------------------------------------
 ]p?b u@f_  < !-- -- -- -- -- -- -- -- -- -- -- -- -- --servlet-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -->
 :;B?Nh 4O  package Photo;
 ctWgp)'  import javax.servlet.*;
 ?R QQWd  import javax.servlet.http.*;
 t0(o}4J)  import java.io.*;
 Kll] 73  import java.util.*;
 6$FXrB<YAJ  import java.lang.*;
 7 T%nJA0k  import java.sql.*;
 k@mSsf+"%  29k, 6  /**
 !lD$V  * <p>Title: </p>
 6/a.|e7rdG  * <p>Description: </p>
 _R x =Wd  * <p>Copyright: Copyright (c) 2002</p>
 &)pyg_`l"  * <p>Company: </p>
 qzGPnE1Y  * @author unascribed
 kxzHNG:<  * @version 1.0
 {o#]`NG  */
 Li'A!Q0=  :LUV@3/  public class ShowImage extends HttpServlet {
 q' i^0]z    private static final String CONTENT_TYPE = "image/*";
 .f'DbZ    /**
 R]|!tnn ry    * 定义数据库连接字符串,jdbc.odbc桥
 #Eri\n6AC    */
 hoL OBt*    private String driver_class = "oracle.jdbc.driver.OracleDriver";
 52#)~$    private String connect_string =
 0#p[.l      "jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL";
 P !b 7v    Connection conn = null;
 ^i0\gw|    ResultSet rs = null;
 E&pDg9sOd    Statement stmt = null;
 *W@"F^VB    /********************************************
 1brv+YqR    * 定义应用变量
 )Te*?#0    ******************************************/
 Y> Czk    private String SQLString = ""; //定义查询语句
 mZ23&28    public String M_EorrMenage = ""; //定义错误信息变量
 ^V}!C8Os    private InputStream in = null; //定义输入流
 Eew:l~    private int len = 10 * 1024 * 1024; //定义字符数组长度
 6dx*+M7$>  YK eY;    //Initialize global variables
 &Y>|goRI+    public void init() throws ServletException {
 Vrcz@Xs.]      /**
 uuhD:ef      * 连接数据库
 Y?bFBbF2g      */
 CV/t4 z=m1      try {
 [RbgX~R          Class.forName(driver_class);
 &^YIDv}      } catch (java.lang.ClassNotFoundException e) {
 d#WwvvI          //异常
 _JQ!(C %          System.err.println("databean():" + e.getMessage());
 ]Q.]yf&      }
 ],'\kU{Gr    }
 -D_*(&g    //Process the HTTP Get request
 wqCl    public void doGet(HttpServletRequest request, HttpServletResponse response)
 *#rAuuK\e      throws ServletException, IOException {
 Hf29LcG 2i      response.setContentType(CONTENT_TYPE);
 cQwStm      PrintWriter out = response.getWriter();
 jh{Y.n&      //在数据库中的照片的ID
 ${kR|; B      int PHOTOID = 0;
 vG_*t?      /*********************************************
 mT DsSO4      * 接受上文传递的图片ID号
 kFb(|dN&      * 上文传输文件名称为photoid
 b+igT1eg      *********************************************/
 6N "VcjA*&      try {
 aHbHP  |?F~NX          PHOTOID = Integer.parseInt(request.getParameter("photoid"));
 ;VJW~6q          SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
 f4vF|D/  GRnldVbZ$      } catch (Exception e) {
 &S_57h~h          e.printStackTrace();
 Pm~w<F          response.setContentType("text/html; charset=gb2312");
 H Zvo6=yj8          M_EorrMenage = "请输入图片ID号";
 m<G\k          M_EorrMenage =
 UHjYBb1lj            new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
 5)qXz|c:&          out.println("<%@ page contentType='text/html; charset=gb2312' %>");
 J18aW`L7_O          out.println("<html>");
 YH|o]YJ          out.println("<head><title>id</title></head>");
 -NB^f7}8          out.println("<body>");
 A$nZllk`          out.println("<p>" + M_EorrMenage + "</p>");
 D>A6 /mOd          out.println("</body></html>");
 }0#xejL~u   3!{p      }
 c4' 9jz}G      /*****************************************************
 X;3|)      * 执行查询语句
 n.18D/@7<      *****************************************************/
 7O8Iu\?      try {
 gy C{DaF          conn = DriverManager.getConnection(connect_string);
 ]}Sym?t$          stmt = conn.createStatement();
 0<_:{^{^^          rs = stmt.executeQuery(SQLString);
 ~:{K|Go      } //try
 0p?'Aee      catch (SQLException ex) {
 $"F.v          System.err.println("aq.executeUpdate:" + ex.getMessage());
 <~@ a<          M_EorrMenage = "对不起,数据库无法完成此操作!";
 EG#Z;<Zw+g          M_EorrMenage =
 qDSu^H            new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
 EJ}6<vX2          response.setContentType("text/html; charset=gb2312");
 i:-BMa)          out.println("<html>");
 !eI~O H7ny          out.println("<head><title>no_database</title></head>");
 j8VKH=:6          out.println("<body>");
  _1FPUs          out.println("<p>" + M_EorrMenage + "</p>");
 Dl-'=          out.println("</body></html>");
 9 |].keb  cyf0PHh'      }
 c#R'H47Q      /*********************************************
 cz5P QQ      * 将图片流读入字符数组中,并显示到客户端
 ZSH9 o&b      ********************************************/
 {,5zw Z`      try {
 dy>#Eg          if (rs.next()) {
 pA^U\"*;WD            in = rs.getBinaryStream("photo");
 MH N7C("Z            response.reset(); //返回在流中被标记过的位置
 %ydzX~U            response.setContentType("image/jpg"); //或gif等
 ouH$S+            // int len=in.available();//得到文件大小
 O3;W$lV            OutputStream toClient = response.getOutputStream();
 !lG11R -            byte[] P_Buf = new byte[len];
 wsYs0c9            int i;
 Y.X Pp            while ((i = in.read(P_Buf)) != -1) {
 ;(4CGn5kF              toClient.write(P_Buf, 0, i);
 9_*5Yy?WG            }
 c8Pv{NyLR            in.close();
 47JmDr_cx            toClient.flush(); //强制清出缓冲区
 &eh'pHg            toClient.close();
 w e2)G=Z          } else {
 ,`o| 9:g=            M_EorrMenage = "无此图片!";
 446&R<@;            M_EorrMenage =
 |ZEiv;6&              new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
 `\.1r+            response.setContentType("text/html; charset=gb2312");
 m:AT&+2!            out.println("<html>");
 Soi]^f{ #|            out.println(
 E4*KOB~}2              "<head><title>this photo isn't have</title></head>");
 x+9cq6QRX            out.println("<body>");
 IdblA.%            out.println("<p>" + M_EorrMenage + "</p>");
 *Mf+iT            out.println("</body></html>");
 !5af3gl          }
 ?y|E,h          rs.close();
 3|J2Z(<      } catch (Exception e) {
 6E4iZg,          e.printStackTrace();
 $F4k*A-_R          M_EorrMenage = "无法读取图片!";
 =Tnw[2qt          M_EorrMenage =
 n [^}            new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
 mPVY}pe          response.setContentType("text/html; charset=gb2312");
 PH 0vLN          out.println("<%@ page contentType='text/html; charset=gb2312' %>");
 +wYg+x          out.println("<html>");
 Qw+@72.          out.println("<head><title>no photo</title></head>");
 _c!F9UIy          out.println("<body>");
 ,!@NKsx          out.println("<p>" + M_EorrMenage + "</p>");
 nD**          out.println("</body></html>");
 %3a_      }
 p/aO?L9    }
 =+qP|]FSS  .!?j\(VG    //Clean up resources
 9k&7w?hg    public void destroy() {
 anYn^-|      try {
 :m:!O9pP          conn.close();
 Whr-A>7-      } catch (SQLException e) {
 3=bn$CP[&4          System.err.println("aq.executeUpdate:" + e.getMessage());
 & Kf x`]          M_EorrMenage = "对不起,数据库无法完成此操作!";
 EF/*^      }
 uzQp~rF    }
 Y[*h  }
 w[@y>OHgA4  --------------------------------------------------------------------------------
 t.ynJhA`<  L3}Uc0  <!---------------------------显示---------------------------------------------->
 /WeAF:d3p  <html>
 S7,bK*JVlg  <head>
 iy=Qd$2  <title>Untitled Document</title>
 O`zwBa  </head>
 9D i@  <body bgcolor="#FFFFFF" text="#000000">
 -_-O K`  <table>
 Qj18 @F;  <%
 kwoCH%90  int i=1;
 (,T`w]pn  while(i<3){
 m ~yMi-h[+  %>
 o# (V+F  <tr> 
-u7e 2  <td colspan="3"> <img border="1" src="
http://192.168.1.50:8100/ShowImage?photoid=<%=i%>"></td>
 *\"7x4  </tr>
 FDpdCji  <%
 }V;6mS&E(  i++;
 @_Sa e  }
 7<YI-"tz  %>
 YGf^SBCa  </table>
 z5,L!  </body>
 ]+@u0~-P  </html>