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>
<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>
}