Servlet 3.0文件上传处理异常

Ris*_*isu 5 java servlets servlet-3.0 servlet-filters

我正在尝试使用Java Servlet 3.0上传文件。

@WebServlet("/uploadFile")
@MultipartConfig(fileSizeThreshold=1024*1024*1,    // 1 MB
                 maxFileSize=1024*1024*10,          // 10 MB
                 maxRequestSize=1024*1024*100)      // 100 MB
public class FileUploadServlet extends HttpServlet {

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    String serverUploadDir = getServerUploadDir(req);

    Part file;
    try {
      file = req.getPart("fileName");
      file.write(serverUploadDir + File.separator + file.getSubmittedFileName());
      res.sendRedirect("viewDirectory?msg=File Uploaded.");
    }
    catch (IllegalStateException ex) {
      System.out.println(ex.getMessage());
    }

  }

  public String getServerUploadDir(HttpServletRequest req) {
    return req.getParameter("serverUploadDir");
  }
}
Run Code Online (Sandbox Code Playgroud)

当文件maxFileSize位于@MultipartConfig批注中声明的位置时,它可以正常工作。但是,当它们超过该大小时,我得到一个IllegalStateException,并且我的浏览器显示Connection已重置。即使我尝试将请求转发到捕获中的其他页面,也无法正常工作。

我知道使用Spring框架,我可以创建一个filterMultipartResolver,当maxUploadSize超过时可以处理。有没有一种方法可以创建一个常规的Java Servlet过滤器来做同样的事情?