一个Servlet服务器很少有多部分表单

时间:2016-12-01 18:57:14

标签: forms servlets multipart

我将在jsp中使用很少的多部分表单,并且必须使用servlet处理它们。所有工作都可以正常使用第一种形式,但是如果我尝试在servlet的doPost方法中添加switch,它会停止识别字段值:userName不能为null。

jsp表格:

 <form action="ServletMultipartForm" method="post" name="Form" enctype="multipart/form-data">
        <br>
        <label>NAME</label><br>
        <input type="text" name="instrName">
        <label>IMAGE</label><br>
        <input type="file" name="instrImage">       
        <input type="submit" value="Submit Instructor" name="action"> 
    </form>

ServletMultipartForm.java

@MultipartConfig

public class ServletMultipartForm extends HttpServlet {

private final String UPLOAD_DIRECTORY = "F:/OLD/JAVAJSP - Copy/PROGRAMMING_ASSIGNMENT3/ASpace/web/img/instructors";
String userImage = null;
String userName = null;

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

    List<FileItem> items = null;
    try {
        items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    } catch (FileUploadException ex) {
        Logger.getLogger(ServletMultipartForm.class.getName()).log(Level.SEVERE, null, ex);
    }
    for (FileItem item : items) {
        if (item.isFormField()) {
            // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
            String fieldname = item.getFieldName();
            String fieldvalue = item.getString();

            if (fieldname.equalsIgnoreCase("instrName")) {
                userName = fieldvalue;

            }


        } else {
            FileItemFactory factory = new DiskFileItemFactory();

            ServletFileUpload upload = new ServletFileUpload(factory);
            try {
                // Parse the request
                List<FileItem> multiparts = upload.parseRequest(request);

                userImage = new File(item.getName()).getName();
                item.write(new File(UPLOAD_DIRECTORY + File.separator + userImage));

                System.out.println("User Image Name " + userImage);

            } catch (FileUploadException e) {
                throw new ServletException("Cannot parse multipart request.", e);
            } catch (Exception ex) {
                Logger.getLogger(ServletMultipartForm.class.getName()).log(Level.SEVERE, null, ex);
            }


        }

    }

    User in=new User(userName, userImage);
    UserDB.insert(in);
     String FeedbackMessage = "New Instructor " + in.getUserName()+" was added";
        request.setAttribute("FeedbackMessage", FeedbackMessage);
         getServletContext()
                .getRequestDispatcher("/adminPanel.jsp")
                .forward(request, response);
          gotoPage("/adminPanel.jsp", request, response);
}
private void gotoPage(String address, HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(address);
    dispatcher.forward(request, response);
}
}

我尝试根据“action”添加switch语句,smth:

    String selection = request.getParameter("action");

然后开始得到该错误:userName不能为null。 谢谢你的任何建议。

0 个答案:

没有答案