I am trying to upload a file as well as enter some data in MySQL database on the same servlet page.
The problem is that except for the file name none of the other parameters are being sent to the servlet.
Here is the form:
<form method="post" action="upload" enctype="multipart/form-data">
<input type="text" name="name" value="Name"
onBlur="if(this.value=='')this.value='Name'"
onFocus="if(this.value=='Name')this.value='' ">
<br>
<div class="mainselection">
<select name="unit">
<option selected="true" value="" style="display:none;">UNIT</option>
<option value="Chemistry & Physics of Materials">Chemistry & Physics of Materials</option>
<option value="Engineering Mechanics">Engineering Mechanics</option>
<option value="Evolutionary & Organismal Biology">Evolutionary & Organismal Biology</option>
<option value="Molecular Biology and Genetics">Molecular Biology and Genetics</option>
<option value="New Chemistry">New Chemistry</option>
<option value="Theoretical Science">Theoretical Science</option>
<option value="International Centre for Materials Science">International Centre for Materials Science</option>
<option value="Education Technology">Education Technology</option>
<option value="Geodynamics">Geodynamics</option>
<option value="CNR Hall of Science">CNR Hall of Science</option>
<option value="Chemical Biology">Chemical Biology</option>
<option value="Condensed Matter Theory">Condensed Matter Theory</option>
<option value="CSIR Centre of Excellence in Chemistry">CSIR Centre of Excellence in Chemistry</option>
<option value="DST Unit on Nanoscience">DST Unit on Nanoscience</option>
<option value="Centre for Computational Material Science">Centre for Computational Material Science</option>
<option value="Neuroscience">Neuroscience</option>
</select>
</div>
<input type="hidden" name="Username" value="<%=request.getParameter("Username")%>">
<input type="hidden" name="Password" value="<%=request.getParameter("Password")%>">
<input type="hidden" name="user" value="<%=request.getParameter("user")%>">
<input type="file" name="file" size="100">
<br>
<input type=submit value="Submit">
</form
And the servlet is:
public class FileUploadHandler extends HttpServlet {
private final String UPLOAD_DIRECTORY = "E:/workspace/pooja/newsletter/WebContent/articles/";
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=null;
//process only if its multipart content
if (ServletFileUpload.isMultipartContent(request)) {
try {
List<FileItem> multiparts = new ServletFileUpload(
new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : multiparts) {
if(!item.isFormField()){
name =new File(item.getName()).getName();
item.write( new File(UPLOAD_DIRECTORY + File.separator + name));
}
}
//File uploaded successfully
} catch (Exception ex) {
}
String unit=request.getParameter("unit");
String name1=request.getParameter("name");
String user=request.getParameter("Username");
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/newsletter?", "root", "pooja");
String query="insert into browse values('0',?,NOW(),?,?,?)";
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setString(1, name1);
stmt.setString(2, name);
stmt.setString(3, unit);
stmt.setString(4, user);
stmt.executeUpdate();
String[] realname=name.split("\\.");
String query2="create table "+realname[0]+"(comment varchar(500))";
PreparedStatement stmt1 = conn.prepareStatement(query2);
stmt1.executeUpdate();
} catch (SQLException e) {
} catch (ClassNotFoundException ne) {
}
} else {
request.setAttribute("message",
"Sorry this Servlet only handles file upload request");
}
request.setAttribute("Username", request.getParameter("Username"));
request.setAttribute("Password", request.getParameter("Password"));
request.setAttribute("user", request.getParameter("user"));
RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
dispatcher.forward(request, response);
}
}
I've been passing all the parameters but the values stored in mysql database are null
.