2012-03-29 8 views
0

ShowImage.java jspzeigen alternatives Bild von Servlet

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package form; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.PrintWriter; 
import java.sql.Blob; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class CriminalPic extends HttpServlet { 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 

     try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "epolicia", "admin"); 
      PreparedStatement ps = con.prepareStatement("select * from CRIMINAL_PIC where CRIMINAL_ID = ?"); 
      String id = request.getParameter("id"); 
      ps.setString(1,id); 
      ResultSet rs = ps.executeQuery(); 
      rs.next(); 
      Blob b = rs.getBlob("PICTURE"); 
      response.setContentType("image/jpeg"); 
      response.setContentLength((int) b.length()); 
      InputStream is = b.getBinaryStream(); 
      OutputStream os = response.getOutputStream(); 
      byte buf[] = new byte[(int) b.length()]; 
      is.read(buf); 
      os.write(buf); 
      os.close(); 
     } 
     catch(Exception ex) { 
      PrintWriter out = response.getWriter(); 
      out.print("../pics/thief.jpg"); 
     } 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
     processRequest(request, response); 
    } 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
     processRequest(request, response); 
    } 
} 

show.jsp

<%out.print("<img width='100%' height='200' src=../CriminalPic?id=" +rs.getString(1) + "></img>");%> 

Ich versuche, das Bild aus der Datenbank unter Verwendung von Servlets angezeigt werden soll. Es funktioniert gut, aber für die Alternative, wenn es irgendeine Ausnahme für diesen Fall hat, muss es das alternative Bild zeigen, dessen Pfad angegeben wurde. Aber es zeigt nichts an. Brauche Hilfe !!

Antwort

0

Rufen Sie das CriminalPic-Servlet über das src-Attribut eines img-Tags in HTML auf?
Wenn ja, dann ist hier meine Idee.

public class CriminalPic extends HttpServlet { 
protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
    InputStream is = null; 
    OutputStream os = response.getOutputStream(); 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "epolicia", "admin"); 
     PreparedStatement ps = con.prepareStatement("select * from CRIMINAL_PIC where CRIMINAL_ID = ?"); 
     String id = request.getParameter("id"); 
     ps.setString(1,id); 
     ResultSet rs = ps.executeQuery(); 
     rs.next(); 
     Blob b = rs.getBlob("PICTURE"); 
     response.setContentType("image/jpeg"); 
     response.setContentLength((int) b.length()); 
     is = b.getBinaryStream(); 
     byte buf[] = new byte[(int) b.length()]; 
     is.read(buf); 
     os.write(buf); 
    } 
    catch(Exception ex) { 
     File file = new File(getServletContext.().getRealPath("/pics/thief.jpg")); 
     FileInputStream fis = new FileInputStream(file); 
     int bytes; 
     while ((bytes = fis.read()) != -1) { 
     os.write(bytes); 
     } 
    } 
+0

immer Fehler bei 'Datei file = new File (getServletContext() getRealPath ("/ Bilder/thief.jpg")..);' Erwartet –

+1

Leider Tippfehler. Entfernen Sie einen zusätzlichen Zeitraum Datei Datei = neue Datei (getServletContext(). GetRealPath ("/ pics/thief.jpg")); – rickz