在表单中使用 multipart/form-data enctype 时无法将参数传递给 servlet

Cannot pass parameters to servlet when using multipart/form-data enctype in form

我正在尝试从我的 jsp 文件中嵌入的文本编辑器传递格式化文本。我在我的表单标签中使用 enctype="multipart/form-data"。使用默认 enctype 时,我可以将参数传递给 underyling servlet。但是在我的 servlet 中使用 multipart/form-data enctype 时我得到 null。

我的表格

<form action="pdfGenServlet" method="post" enctype="multipart/form-data">
                    <!-- input notes title-->
                    <div class="form-group">
                        <div class="input-group">
                            <input type="text" class="form-control" placeholder="Title of the notes" name="title">
                        </div>
                    </div>
                    <!-- input notes description-->
                    <div class="form-group">
                        <div class="input-group">
                            <input type="text" class="form-control" placeholder="Enter short description" name="description">
                        </div>
                    </div>

                    <div class="form-group">
                      <textarea name="content" id="myEditor"></textarea>

                     <div id="button-panel" class="panel panel-default">
                          <p>
                              <button type="submit" class="btn btn-primary "><span class="glyphicon glyphicon-plus"></span><strong> Create Note</strong></button>
                              <button class="btn btn-primary" type="reset"><strong>Reset</strong></button>
                          </p><!-- buttons -->
                     </div><!-- panel Button -->

                    </div>

                </form> 

我的pdfGenServlet.java

  @WebServlet("/pdfGenServlet")
 public class pdfGenServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      try {
            // Get the text that will be added to the PDF
            request.setCharacterEncoding("UTF-8");

            String title = request.getParameter("title");
            String description = request.getParameter("description");
            String notes_content = request.getParameter("content");
            Date date = new Date();
        } catch(exception e)
        {e.printStackTrace();}
      }

参考以下内容link它会帮助您上传带有输入参数的图片:

http://www.avajava.com/tutorials/lessons/how-do-i-upload-a-file-to-a-servlet.html

如果你想从 HTML(JSP) 中获取参数,形成内容属性“enctype="multipart/form-data"”。

  • 您应该在将接收所有这些参数的 servlet 中添加 @MultipartConfig(同时在 Convey/Dispatch Servlet 中添加 @MutipartConfig)。
  • 在@MultipartConfig中包含三个元素:fileSizeThreshold、maxFileSize、maxRequestSize;
  • (我使用Servlet 3 File Upload上传文件)

我使用下面的代码解决了这个问题。 您应该将 @MultipartConfig 注释添加到您的 Servlet class 中: 例如:

@WebServlet("/admin/create_book")
@MultipartConfig(
        fileSizeThreshold = 1024 * 10,  // 10 KB
        maxFileSize = 1024 * 300,       // 300 KB
        maxRequestSize = 1024 * 1024    // 1 MB 
)
public class CreateBookServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public CreateBookServlet() {
        super();
    }

    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        BookServices bookServices = new BookServices(request, response);
        bookServices.createBook();
    }

}