在enctype =“multipart / form-data”请求不起作用之后

public class Relay extends HttpServlet { @Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String command = request.getParameter("command"); RequestDispatcher rd =request.getRequestDispatcher(command); rd.forward(request, response); System.out.println("Request forwarded to " + command + " servlet"); } } 

这是我的接力服务员,我发送日期

  
/

它给出了java.lang.NullPointerException。 enctype =“multipart / form-data”//当我删除它的工作正常

为什么需要添加呢? 保持原样。

如果你需要它来通过上传一个你想要稍后添加的 ,那么你应该在你的servlet上放置@MultipartConfig注释,这样request.getParameter()就可以工作了request.getPart()可以检索上传的文件。

 @WebServlet("/Relay") @MultipartConfig public class Relay extends HttpServlet { // ... } 

也可以看看:

  • 如何使用JSP / Servlet将文件上传到服务器?

使用multipart/form-data编码的参数在POST正文中发送 – 而不是作为常规请求参数,因此无法使用request.getParamter(...)读取。

查看Commons文件上传包以进行多部分请求处理。

我将此包括在内以获取有关故障排除的其他信息。 如果您遇到困难并希望了解通过多部分请求所有参数的来源,您可以使用以下代码打印所有参数。

 MultipartRequest multi =  Enumeration en1 = multi.getParameterNames(); while (en1.hasMoreElements()) { String strParamName = (String)en1.nextElement(); String[] strParamValues = multi.getParameterValues(strParamName); for (int i = 0; i < strParamValues.length; i++) { System.out.println(strParamName + "=" + strParamValues[i]); } }