2017-03-08 4 views
0

Ich versuche, ein Servlet ein Bild im Blob-Format in die Datenbank hochladen, aber ich habe Probleme, die @ WebServlet Annotation zu machen.Probleme bei der Erstellung von WebServlet-Annotation in JSP

Wenn ich mein Formular abschicke, wird die Ressource nicht gefunden.

studentdashboard.jsp

<form class="form-inline" action="changedp" method="post" enctype="multipart/form-data"> 
    <div class="col-md-4"> 
     <div class="form-group"> 
      <input class="btn" type="file" name="dp" id="dp"> 
     </div> 
    </div> 
    <div class="col-md-4"> 
     <div class="form-group"> 
      <input class="btn btn-primary" type="submit" value="Upload File"> 
     </div> 
    </div> 
</form> 

changedp.java

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

    @WebServlet(name = "changedp",urlPatterns = {"changedp"}) 
    @MultipartConfig(maxFileSize = 16177215) // upload file's size up to 16MB 
    public class changedp extends HttpServlet { 

     // database connection settings 
     private String dbURL = "jdbc:mysql://localhost/cll"; 
     private String dbUser = "root"; 
     private String dbPass = "root"; 

     protected void doPost(HttpServletRequest request, 
       HttpServletResponse response) throws ServletException, IOException { 


      InputStream inputStream = null; // input stream of the upload file 

      // obtains the upload file part in this multipart request 
      Part filePart = request.getPart("dp"); 
      if (filePart != null) { 
       // prints out some information for debugging 
       System.out.println(filePart.getName()); 
       System.out.println(filePart.getSize()); 
       System.out.println(filePart.getContentType()); 

       // obtains input stream of the upload file 
       inputStream = filePart.getInputStream(); 
      } 

      Connection conn = null; // connection to the database 
      String message = null; // message will be sent back to client 

      try { 
       // connects to the database 
       DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 
       conn = DriverManager.getConnection(dbURL, dbUser, dbPass); 
       HttpSession session=request.getSession(); 
       // constructs SQL statement 
       String sql = "UPDATE student_login_tabl SET image=? where `sid` = '"+session.getAttribute("sid")+"'"; 
       PreparedStatement statement = conn.prepareStatement(sql); 
       if (inputStream != null) { 
        // fetches input stream of the upload file for the blob column 
        statement.setBlob(1, inputStream); 
       } 

       // sends the statement to the database server 
       int row = statement.executeUpdate(); 
       if (row > 0) { 
        message = "File uploaded and saved into database"; 
       } 
      } catch (SQLException ex) { 
       message = "ERROR: " + ex.getMessage(); 
       ex.printStackTrace(); 
      } finally { 
       if (conn != null) { 
        // closes the database connection 
        try { 
         conn.close(); 
        } catch (SQLException ex) { 
         ex.printStackTrace(); 
        } 
       } 
      } 
     } 
    } 
+3

möglicherweise zeigen die genaue Fehlermeldung –

Antwort

0

Sie können Ihre Anmerkung zu

@WebServlet(name = "changedp", urlPatterns = {"/changedp"}) 

und es sollte funktionieren ändern.

Auch gibt es kurze Variante

@WebServlet("/changedp") 

Vereinbarungs ersten Buchstaben jedes interne Wort der Klasse aktiviert werden sollte.

Auch Instanzvariablen im Servlet sind nicht threadsicher. Versuchen Sie daher, diese in Zukunft zu vermeiden.

Formularaktion:

<form id="form-inline" name="form-inline" action="${pageContext.request.contextPath}/changedp" method="post" enctype="multipart/form-data" accept-charset="utf-8"> 

oder

<form id="form-inline" action="changedp" method="post" enctype="multipart/form-data"> 

Try die Reihenfolge der Annotationen zu wechseln.

@MultipartConfig(maxFileSize = 16177215) // upload file's size up to 16MB 
    @WebServlet(name = "changedp", urlPatterns = {"/changedp"}) 
     public class changedp extends HttpServlet { 

Überprüfen Sie auch Ihre URL. Geben Sie es richtig ein http://localhost:8080/YourProjectName/changedp

und geben Sie bitte weitere Informationen.

Verwandte Themen