jsp图像显示

时间:2013-02-07 06:37:41

标签: jsp jsp-tags jspinclude jspx

我已尝试使用blob从MySQL数据库显示图像...图像不可见。 我使用过这段代码。

请纠正此错误

<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <img src="WEB-INF/New folder/birthhappy birthday.jpeg"
         width="65" height="71" alt="birthhappy birthday"/>    
        <H1>Database Lookup</H1>
        <FORM ACTION="base.jsp" METHOD="POST">
            Please enter the ID of the publisher you want to find:
            <BR>
            <input type="text" name="imagename">
            <BR>
            <INPUT TYPE="SUBMIT" value="Submit">
        </FORM>


    </body>
</html>

base.jsp:

<%@page import="java.io.OutputStream"%>
<%@ page import="java.sql.*" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

         <% 

        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/searchimg","root","");
         Statement stmt = con.createStatement();
          //String id = request.getParameter("id"); 
          String imagename=request.getParameter("imagename");

          ResultSet resultset =stmt.executeQuery("select * from friendupload where imagename = '" +imagename.trim()+ "' ") ; 

 while(resultset.next())
{




%>                                      

<table>
    <tr>
        <td> <%=resultset.getString(1)%>         </td>
        <td>   <%=resultset.getString(2) %> </td>
        <td>    <%=resultset.getString(3)%>  </td>
                <td>     
                    Blob getimg=rs.getBlob( 4);
      InputStream readImg = getimg.getBinaryStream();
      int size=readImg.available();
      OutputStream outf=new FileOutputStream("D:/profile/"+rs.getString(2)+rs.getString(3)+".jpeg");

      byte b[]= new byte[size];
            readImg.read(b);
            outf.write(b);
            outf.close();



        </td>

    </tr>
    </table>

<% }%>

        </form>

    </body>
</html>

3 个答案:

答案 0 :(得分:0)

为您正在存储的图像提供正确的路径,因此在blob保存图像后,您应该使用图像标记加载它,只是让blob不会显示图像。

<%while(resultset.next())
{
%>                                      
<table>
<tr>
    <td> <%=resultset.getString(1)%>         </td>
    <td>   <%=resultset.getString(2) %> </td>
    <td>    <%=resultset.getString(3)%>  </td>
            <td>     
                Blob getimg=rs.getBlob( 4);
  InputStream readImg = getimg.getBinaryStream();
  int size=readImg.available();
  OutputStream outf=new FileOutputStream("D:/profile/"+rs.getString(2)+rs.getString(3)+".jpeg");

  byte b[]= new byte[size];
        readImg.read(b);
        outf.write(b);
        outf.close();

  <image src="<%=path%>" />

    </td>

</tr>
</table>

您是否检查过图像文件是否已保存在您指定的位置。

答案 1 :(得分:0)

缺少<form>标记,并确保存在d:\ profile /目录 在表单元素中使用<img>元素

答案 2 :(得分:0)

有时浏览器不允许您使用本地硬盘资源。

您最好编写一个ImageServlet来直接传递这些图像,而无需将它们写入文件。

注意:如果使用chunked-stream(默认)传递这些图像,请指定内容长度!否则,浏览器将不知道响应何时结束。这会导致防病毒程序永无止境地分析这些图像。

BTW :WEB-INF /新文件夹/ birthhappy birthday.jpeg无法访问,请尝试使用WEB-INF / classes / META-INF / resources /新文件夹/ birthhappy birthday.jpeg < / p>