0

When I attempt to call request.getParameter() and request.getPart() within my servlet, everything is coming back as null.

I'm using Java JDK 8 and Apache Tomcat 8.5.15. I have a JSP page with a form that submits both text input data and one single file type input. I'm POSTing the data using multipart/form-data encryption.

JSP Snippet

<form id="blogForm" class="form-horizontal" method="POST" action="/InTheMidst/CreateNewBlog" enctype="multipart/form-data">
  <div class="form-group">
    <label class="control-label" for="titleInput">Title:</label>
    <input type="text" name="titleInput" class="form-control" maxlength="255" placeholder="Enter title..." required>
  </div>
  <div class="form-group">
    <label class="control-label" for="dateInput">Date:</label>
    <input type="date" name="dateInput" class="form-control" maxlength="8" placeholder="Select date..." required>
  </div>
  <div class="form-group">
    <label class="control-label" for="authorInput">Author:</label>
    <input type="text" name="authorInput" class="form-control" maxlength="150" placeholder="Enter author..." required>
  </div>
  <div class="form-group">
    <label class="control-label" for="contentInput">Content:</label>
    <textarea name="contentInput" class="form-control" maxlength="65000" required></textarea>
  </div>
  <div class="form-group">
    <label class="control-label" for="fileInput">Image:</label><br>
    <input type="file" name="fileInput" class="form-control">
  </div>
  <div class="form-group">
    <button type="button" class="btn btn-success" onclick="document.getElementById('blogForm').submit();"><span class="glyphicon glyphicon-floppy-disk"></span> Create</button>
    &nbsp;
    <a href="../dashboard.jsp" class="btn btn-danger"><span class="glyphicon glyphicon-remove"></span> Cancel</a>
  </div>
</form>

Web Servlet

@MultipartConfig(location = "/InTheMidst/upload/image")
public class CreateNewBlog extends HttpServlet {

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

    // Create an object to store input
    Blog blog = new Blog();

    // Store request
    blog.setBlogId(Blog.createNewId());
    blog.setTitle(request.getParameter("titleInput"));
blog.setDate(GeneralView.dateFromViewToData(request.getParameter("dateInput")));
    blog.setAuthor(request.getParameter("authorInput"));
    blog.setContent(request.getParameter("contentInput"));

    // Get the image upload
    Part inputFile = request.getPart("fileInput");
    String filename = Paths.get(inputFile.getSubmittedFileName()).getFileName().toString();
    String extension = filename.split(".")[1];

    blog.setImagePath("/InTheMidst/upload/image/" + blog.getBlogId() + extension);

    // Write the file
    inputFile.write(blog.getBlogId() + "." + extension);

    // Create a controller to interact with the database
    BlogController controller = new BlogController();

    // Persist account
    boolean success = controller.insertBlog(blog);


}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
 * Handles the HTTP <code>GET</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Returns a short description of the servlet.
 *
 * @return a String containing servlet description
 */
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>

}
seenukarthi
  • 8,241
  • 10
  • 47
  • 68

1 Answers1

0

First of all you would check servlet version , if you are use servlet version 3.0 then you can get request parameter with Multipart request.

if you are use lower version of servlet, then you cann't get the post request parameter via request.getParameter, you have to use third party API jar files like commons-file-upload.

you can check server version by following methods-

  1. programatically using ServletContext #getMajorVersion() and #getMinorVersion().
  2. through web.xml in web-app tag.

  3. if you use eclipse IDE then check Dynamic Web Module on Project Facets Property tab .

Sunil
  • 437
  • 3
  • 11