Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数据库检索图像时,所有行中仅显示第一个图像_Java - Fatal编程技术网

Java 从数据库检索图像时,所有行中仅显示第一个图像

Java 从数据库检索图像时,所有行中仅显示第一个图像,java,Java,当我从数据库中检索图像时,仅第一个图像 插入的内容将显示在所有行中, 未检索到第二和第三个图像, 我还附上了屏幕截图以供参考。 当我检查数据库时,所有图像都已成功插入 package form; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Blob; import java.sql.Clob; import java.sql.Con

当我从数据库中检索图像时,仅第一个图像 插入的内容将显示在所有行中, 未检索到第二和第三个图像, 我还附上了屏幕截图以供参考。 当我检查数据库时,所有图像都已成功插入

package form;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import javax.servlet.annotation.MultipartConfig;

/**
 *   Servlet implementation class emp
 */
 @WebServlet("/emp")
 @MultipartConfig(maxFileSize = 16177215)
 public class emp extends HttpServlet {
 private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public emp() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see Servlet#getServletConfig()
 */
//public ServletConfig getServletConfig() {
    // TODO Auto-generated method stub
    //return null;
//}

/**
 * @see Servlet#getServletInfo()
 */
//public String getServletInfo() {
    // TODO Auto-generated method stub
    //return null; 
//}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
//  response.getWriter().append("Served at: ").append(request.getContextPath());

    String id=request.getParameter("id");  
    String firstname=request.getParameter("fname");
    String lastname=request.getParameter("lname");
    String date=request.getParameter("ddate");
    //String imagename=request.getParameter("myfile");


    InputStream  input=null;
    Part load=request.getPart("myfile");

    input=load.getInputStream();




    //InputStream fileupload= null;
    //Part  doc=request.getPart("mydoc");
    //fileupload=doc.getInputStream();
    //byte[]  file=new byte[fileupload.available()];
    //fileupload.read(file);

    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection y=DriverManager.getConnection("jdbc:mysql://localhost:3306/fileupload","root","password");
        PreparedStatement  x=y.prepareCall("insert into empimage values(?,?,?,?,?)");
        x.setString(1, id);
        x.setString(2,firstname);
        x.setString(3,lastname);
        x.setString(4,date);
        x.setBlob(5,input);
        //x.setString(5,imagename);
        //x.setBytes(5,file);
        x.executeUpdate();

        System.out.println("Date inserted");
    request.getRequestDispatcher("new.html").include(request, response);

    }

    catch (Exception e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }




}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
}
New.html

这是我的html代码

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body><form action="emp" method="post"  enctype="multipart/form-data" accept-charset="UTF-8">
Employee ID: <br>
<input type="text"  size="20"  name="id">
<br>
Employee First Name :  <br>
<input  type="text" size="20" name="fname">
<br>
Employee Last Name :<br>
<input type="text" name="lname"><br>
Date of Birth :<br>
<input  type="date" name="ddate"><br>
Image Upload:<br>
<input  type="file"  name="myfile"><br>
<script>
function myfunction()
{
 var x=document.    getElementById("myfile")
}

</script>
<input  type="submit"  value="Submit">
<iframe  name="ifs" src="display" style="width:550px; height:300px" >  </iframe>

 </form>
 </body>
 </html>
}

Display.java

这是我的显示代码,用于显示数据库中插入的所有信息

   package form;

  import java.io.IOException;
  import java.io.OutputStream;
  import java.io.PrintWriter;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import javax.servlet.ServletException;
  import javax.servlet.ServletOutputStream;
  import javax.servlet.annotation.WebServlet;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import com.mysql.jdbc.Blob;

  /**
   * Servlet implementation class display
  */
  @WebServlet("/display")
  public class display extends HttpServlet {
  private static final long serialVersionUID = 1L;

 /**
 * @see HttpServlet#HttpServlet()
 */
 public display() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse    response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    // TODO Auto-generated method stub
    response.getWriter().append("Served at:  ").append(request.getContextPath());

    PrintWriter out=response.getWriter(); 
    //ServletOutputStream out = response.getOutputStream();

try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/fileupload","root","password");
    PreparedStatement  pre=con.prepareCall("select id,firstname,lastname,DOB from fileupload.empimage");
    //select * from fileupload.empimage
    ResultSet  rs=pre.executeQuery();
    out.println("<html>");
    out.println("<head>");
    //out.println("<title> Display Data </title>");
    /*out.println("<style>");
    out.println("<table>");
    {
        out.println("<table font-family:arial,sans-serif;>");
        out.println("<table border-collapse:collapse;>");
        out.println("<table width:100%;>");
    }

    out.println("<td><tr>");   
    {
        out.println("<td,th border:1px solid #dddddd;>");
        out.println("<td,th text-align: left;>");
        out.println("<td,th padding: 8px;>");
    }
    out.println("</style>");*/
    out.println("</head>");
    out.println("<body>");
    out.println("<table style=width:100%;height:auto;>");
    out.println("<tr><th>id</th><th>fname</th><th>lname</th><th>date</th><th align='center'> image </th></tr>");
    while(rs.next())
        {
        out.println("<tr>");
        int id=rs.getInt(1);
        out.println("<td>" + id + "</td>" );
        out.println("<td>" + rs.getString(2) + "</td>" );
        out.println("<td>" + rs.getString(3) + "</td>");
        out.println("<td>" + rs.getString(4) + "</td>");
        out.println("<td style='width:150px; height:125px;'><img src="+ "retrieve?"+ id +" style='width:150px;height:125px;'</td>");
        out.println("</tr>");
            }   


   // o.write(imgdata);
    //o.flush();
    //o.close();

    out.println("</table>");
    out.println("</body>");
    out.println("</html>");


    }


catch (ClassNotFoundException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }








    }

   /**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
   }

   }

如果您是从Display类调用doget()方法,并且您的代码如下所示,那么请猜一猜:

        <img src="+ "retrieve?"+ id +" style='width:150px;height:125px;'</td>");
”;
因此,这里您已经将参数id传递给retrieve api,但在retrieve.java类中未使用该参数

简而言之,您需要将查询更新为

select  image from fileupload.empimage where id=<the parameter>
从fileupload.empimage中选择图像,其中id=

希望这篇文章能帮助您

在您的检索器中,您应该使用HTTP请求中的
id
参数:

String query = "select image from fileupload.empimage where id = ?";
PreparedStatement pre = con.prepareCall(query);
pre.setString(1,request.getParameter("id"));
ResultSet rs = pre.executeQuery();
当我使用“id”检索图像时,正如上面的代码所述,您已经声明了String id=request.getQueryString();out.println(“query String”+id);//getQueryString抛出空值,即使我尝试了“GET”方法,它也没有成功,请建议任何解决方法
String query = "select image from fileupload.empimage where id = ?";
PreparedStatement pre = con.prepareCall(query);
pre.setString(1,request.getParameter("id"));
ResultSet rs = pre.executeQuery();