在你的jsp文件里,编写显示图片的代码(就像在普通的html里显示图片一样)。

解决方案 »

  1.   

    用SERVLET实现很容易的,然后在你的JSP文件中调用这个SERVLET同时传递一个参数即可
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import javax.naming.*;
    import java.sql.*;
    import javax.sql.*;
    public class showimage extends HttpServlet {
     public Connection conn=null;
     public ResultSet rs=null;
     public Statement stmt=null;
     public void init(ServletConfig config) throws ServletException {
      super.init(config);
       }
      protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
       try{
    Context ctx = new InitialContext();
    DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/dbconnect");
    conn= ds.getConnection();
    stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    }
    catch(NamingException ne){System.out.print(ne.getMessage());this.closeConnection();return;}
    catch(SQLException se){System.out.print(se.getMessage());this.closeConnection();return;}
    catch(Exception e){System.out.print(e.getMessage());this.closeConnection();return;}
    ServletOutputStream out=response.getOutputStream();
    String teacher_id=request.getParameter("teacher_id");
    response.setContentType("image/gif");
    try{
    rs=stmt.executeQuery("select zp from teacher where teacher_id='"+teacher_id+"'");
        if(rs.next()){
       InputStream in=rs.getBinaryStream(1);
    if(in==null){
    this.closeConnection();
        return;
    }
    byte[] buffer=new byte[4096];
    while(true){
    int nbytes=in.read(buffer);
    if(nbytes==-1)
    break;
    out.write(buffer,0,nbytes);
    }//end while;*/
    in.close();
    out.flush();
    }//end if;
    }catch(Exception e){
    out.print("error 1"+e.toString());
    this.closeConnection();
    return;
    }
        this.closeConnection();
    }//end function doGet();
      protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    doGet(request,response);
      }
      public void destroy(){
     super.destroy();
    }
      protected void closeConnection(){
     if(conn!=null){
    try{if(rs!=null)rs.close();
    if(stmt!=null)stmt.close();
    conn.close();
    }catch(Exception e){
         System.out.print("close error"+e.toString());
    }finally{
        if(rs!=null){try{rs.close();}catch(Exception ignore){}}
    if(stmt!=null){try{stmt.close();}catch(Exception ignore){}}
    if(conn!=null){try{conn=null;}catch(Exception ignore){}}
    }//end finally;
      }//end if;
       }
     }
      

  2.   

    xqg1130(无名):请您告诉我,JSP页面上显示的图片是乱码的原因!最好根据我现有的代码提出修改意见!万分感谢!
      

  3.   

    我想你说你有时候可以正常显示,有时候不可以,那问题应该不再servlet上面,应该在你得jsp文件里,你把jsp文件贴出来吧。
      

  4.   

    我的这个JSP文件太长了,贴出主要部分代码,请教图片显示出错原因?!
    <%@ page
    contentType="text/html; charset=GBK"
    import="com.client.gzdx.*,com.client.rk.*,zxctc.tool.*,java.sql.*,javax.servlet.*,javax.servlet.http.*"
    %>
    <%
       double dou=Math.random();
       //response.setHeader("Refresh","300");
    %>
    <jsp:useBean id="ejbutil" scope="Application" class="com.util.EJBUtil" />
    <jsp:useBean id="jsputil" scope="Application" class="com.util.JSPUtil" />
    <jsp:useBean id="gzdxgzdxzb" scope="request" class="com.client.gzdx.GzdxGzdxzb" />
    <jsp:useBean id="gzdxgzdxzbtmtz" scope="request" class="com.client.gzdx.GzdxGzdxzbTmtz" />
    <jsp:useBean id="gzdxgzdxzbtbtsbj" scope="request" class="com.client.gzdx.GzdxGzdxzbTbtsbj" />
    <jsp:useBean id="rk" scope="request" class="com.client.rk.Rk" />
    <jsp:useBean id="rkcs" scope="request" class="com.client.rk.RkCs" />
    <jsp:useBean id="rkrhgx" scope="request" class="com.client.rk.RkRhgx" />
    <jsp:useBean id="rkjzjzxx" scope="request" class="com.client.rk.RkJzJzxx" />
    <jsp:useBean id="gzdxgzdxzbajglb" scope="request" class="com.client.gzdx.GzdxGzdxzbAjglb" /><html>
    <head>
    <title></title>
        
    <link rel="stylesheet" href="../public/css/view.css" type="text/css">
    <link rel="stylesheet" href="../public/css/button.css" type="text/css">
    <link rel="stylesheet" href="../public/css/special.css" type="text/css">
    <link rel="stylesheet" href="../public/css/005.css" type="text/css"><script language="JavaScript" src="../public/js/button.js"></script>
    <script LANGUAGE="Javascript" src="../public/js/s_or_h.js"></script>
    <script language="JavaScript" src="../public/js/image.js"></script>
    <script language="JavaScript">
    <!--
    function GetDescription(sValue,codename)
    {
    var sReturnVal;
    var sReturnVal2;
    var oDataRoot ;
    var oData = new ActiveXObject("Msxml2.DOMDocument.3.0");
    var sXMLFile = "../public/xml/htkz/"+codename+".xml";
    oData.async = false;
    oData.load(sXMLFile);
    oNode = oData.documentElement.selectSingleNode("//DMYY[../DM='" + sValue +"']");
        oNode2       = oData.documentElement.selectSingleNode("//DMYY[../DM=" + 0 +"]");
    if (null == oNode)
    sReturnVal = "<font color=red size=2>无代码意义</font>" ;
    else
    sReturnVal = oNode.text ;
        return sReturnVal;
    }
    function GetStrDepict(p_sStr, p_cCodeName)//翻译单个和多个代码函数
    {
      if (p_sStr==""||p_sStr==null||arguments.length==0)
       {
          document.write("<font color=red size=2>无数据</font>");
       }
      else
      {
     var sReturnVal = "";  if (p_sStr.indexOf(";") > 0)
     {
    var aStr = p_sStr.split(";");
    var sTmp = ";";
    var i, nLen nLen = aStr.length ;
    for (i=0; i<nLen; i++)
    { if (0 == i)
    {
    sReturnVal += GetDescription(aStr[i], p_cCodeName) ;
    }
    else
    {
    sReturnVal += sTmp + GetDescription(aStr[i], p_cCodeName) ;
    }   }
     }
     else
     {
      sReturnVal = GetDescription(p_sStr, p_cCodeName) ;
     }  document.writeln(sReturnVal) ;
       }
    }//-->
    </SCRIPT>
    </head>
    <body  onerror="document.location=#" topMargin=0 leftMargin=0>
    <table class="button_table" cellspacing="0" cellpadding="0" width="100%">
    <tr>
    <td class="frame_td" align="center">
    <!-- 登记表:工作对象基本信息 -->
    <table id="tab" cellPadding=0 cellSpacing=0 class="view_parent_table" style="display:block"><tr><td class="view_th" colspan="18">常住人口基本信息</td></tr>
        <tr>
         <td align="center">
          <table border="1" width="100%" class="view_sub_table">
          <tr>
          <td width="5%" rowspan="10" class="view_field_class">
          <td width="8%" class="view_field_class1">
          <p>公民身份<br>
          证件编号</p></td>
          <td width="40%" colspan="6" class="view_data_class1"><%=rk.getRkbh()%> </td>
          <td width="8%" class="view_field_class1"><p><%=jsputil.getFieldCName("xm@rk")%></p></td>
          <td width="18%" colspan="4" class="view_data_class1"><%=rk.getXm()%> </td>
          <td width="20%" rowspan="4" colspan="3" class="view_field_class1"><img id="photo" src="showImageServlet.photo?showMethod=directShow&colName=photo&ran=<%=dou%>" width="90" height="110" onclick="showOriginalPhoto('photo')" style="cursor:hand" title="显示照片原始尺寸"></td>><!--!!!照片调用处 -->
        </tr>
        <tr>
          <td width="8%" class="view_field_class1"><p><%=jsputil.getFieldCName("xbbm@rk")%></P></td>
          <td width="10%" class="view_data_class1"><Script LANGUAGE="JavaScript">GetStrDepict("<%=rk.getXbbm()%>","sex")</Script> </td>
          <td width="9%" class="view_field_class1"><%=jsputil.getFieldCName("csrq@rk")%> </td>
          <td width="180" colspan="4" class="view_data_class1"><%=rk.getCsrq().toString().substring(0,10)%> </td>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("mzbm@rk")%> </td>
          <td width="18%" colspan="4" class="view_data_class1"><script LANGUAGE="JavaScript">GetStrDepict("<%=rk.getMzbm()%>","rt003")</Script> </td>
        </tr>
        <tr>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("whcdbm@rk")%> </td>
          <td width="10%" class="view_data_class1">&nbsp;<script LANGUAGE="JavaScript">GetStrDepict("<%=rk.getWhcdbm()%>","whcdbm")</script></td>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("jgbm@rk")%> </td>
          <td width="42%" colspan="9" class="view_data_class1"><script LANGUAGE="JavaScript">GetStrDepict("<%=rk.getJgbm()%>","rt002")</script> </td>
        </tr>
        <tr>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("fwcsmc@rk")%> </td>
          <td width="180" height="23" colspan="2" class="view_data_class1">&nbsp;<%=rk.getFwcsmc()%></td>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("zymc@rk")%> </td>
          <td width="141" height="23" colspan="3" class="view_data_class1">&nbsp;<%=rk.getZymc()%></td>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("sfbm@gzdx_gzdxzb")%> </td>
          <td width="18%" colspan="4" class="view_data_class1"><script LANGUAGE="JavaScript">GetStrDepict("<%=gzdxgzdxzb.getSfbm()%>","zktjsf")</script> </td>
        </tr>
        <tr>
          <td width="8%" class="view_field_class1">别名绰号</td>
          <td width="440" colspan="7" class="view_data_class1">&nbsp;
          <%
            ArrayList bmch=(ArrayList)request.getAttribute("Rkbm");
            Iterator iterator_bmch=bmch.iterator();
            RkBm rkbmch=new RkBm();
               while(iterator_bmch.hasNext())
                    {
                     rkbmch=(RkBm)iterator_bmch.next();
           %>
            <script LANGUAGE="JavaScript">GetStrDepict("<%=rkbmch.getBmlxbm()%>","bmlxbm")</script><b>:</b><%=rkbmch.getBm()%><b>|</b>
           <%
             }
           bmch=null;
          %>
          </td>
          <td width="8%"  colspan="2" class="view_field_class1">通讯号码</td>
          <td colspan="5" class="view_data_class1">&nbsp;
          <%
            ArrayList rktx=(ArrayList)request.getAttribute("Rktx");
            Iterator iterator_rktx=rktx.iterator();
            RkTx rktxhm=new RkTx();
               while(iterator_rktx.hasNext())
                    {
                     rktxhm=(RkTx)iterator_rktx.next();
           %>
            <script LANGUAGE="JavaScript">GetStrDepict("<%=rktxhm.getTxhmzlbm()%>","txhmzlbm")</script>:<%=rktxhm.getTxhm()%>;
           <%
             }
           rktxhm=null;
           %>
          </td>
        </tr>
        <tr>
          <td width="8%" class="view_field_class1"><%=jsputil.getFieldCName("kybm@gzdx_gzdxzb_ky")%> </td>
          <td width="440" colspan="7" class="view_data_class1">&nbsp;
           <%
            ArrayList kybm=(ArrayList)request.getAttribute("Kybm");
            Iterator iterator=kybm.iterator();
            GzdxGzdxzbKy gzdxgzdxzbky=new GzdxGzdxzbKy();
               while(iterator.hasNext())
                    {
                     gzdxgzdxzbky=(GzdxGzdxzbKy)iterator.next();
           %>
            <script LANGUAGE="JavaScript">GetStrDepict("<%=gzdxgzdxzbky.getKybm()%>","rt057")</script>;
           <%
             }
            kybm=null;
          %>
          </td>
      

  5.   

    flyforlove(为情飞) :我想请教下,是不是我在这个很庞大的JSP页上的所用的脚本和对一些发送上来的结果集等对象的操作影响了图片的显示效果?
    图片是类似那种身份证像的图片,乱码时大部分是黑色,其中能夹杂白色条纹,但是大体能看清人头的轮廓!有时第一次请求之后正常显示,之后发出同一请求,在JSP显示时就又乱码了,救救我呀!
      

  6.   

    你首先应该明白HTTP协议中每一个图片是一个文件,在你的JSP文件中加上
    <img scr=/servlet/servlet文件名?传递的参数=<%=value%>>这样就可以了,其中SERVLET是用来显示图片的那个类!
      

  7.   

    在jsp中编写现实图片的代码<IMG SRC="" WIDTH="" HEIGHT="" BORDER="" ALT="">
    其中src指定的就是你输出图片流的类,这和制定图片文件没什么区别。
    只要你的类输出的图片流没出什么问题,那么这边jsp显示的也就不会有问题。
    根据你说出现的情况,好像是图片流输出时有时候不完整。
    所以才会有显示有残缺的情况。