在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]); } }