【问题标题】:JSP Request.getParameter() returning nullJSP Request.getParameter() 返回 null
【发布时间】:2020-03-25 07:21:29
【问题描述】:

addTest.jsp

<form action="upload.jsp" method="post" name="inputFrom" enctype="multipart/form-data">  
    Test_Name: <input type="text" name="test_nme"/>
    Test_Date: <input type="text" name="test_dte"/>
    File:<input type="file" name="file"/>
    <input type="submit" values="submit"/>
</form>

上传.jsp

<%
    /* String test_name=(String)request.getAttribute("test_nme");
    String test_date=(String)request.getAttribute("test_dte");  
    out.println("CHANGED"+test_name+" "+test_date); */
    out.println(request.getParameter("test_nme")+" "+request.getParameter("test_dte"));
%>

我尝试了 request.getAttribute 和 request.getParameter。但两者都让我返回 null。

【问题讨论】:

    标签: jsp post parameters request


    【解决方案1】:

    使用enctype="multipart/form-data"时不能直接使用request.getParameter("test_nme");获取参数

    在这种情况下,表单字段不能用作请求的参数,它们包含在流中,因此您需要从流中获取它们。一种可能的方法是使用commons-fileupload。这是来自官方文档的示例代码(请参阅“处理上传的项目”部分)

    // Create a factory for disk-based file items
    DiskFileItemFactory factory = new DiskFileItemFactory();
    
    // Configure a repository (to ensure a secure temp location is used)
    ServletContext servletContext = this.getServletConfig().getServletContext();
    File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
    factory.setRepository(repository);
    
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    
    // Parse the request
    List<FileItem> items = upload.parseRequest(request);
    
    // Process the uploaded items
    Iterator<FileItem> iter = items.iterator();
    while (iter.hasNext()) {
        FileItem item = iter.next();
    
        if (item.isFormField()) {
            processFormField(item);
        } else {
            processUploadedFile(item);
        }
    }
    

    对于常规表单域

     // Process a regular form field if (item.isFormField()) {
         String name = item.getFieldName();
         String value = item.getString();
         ... }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2021-12-10
      • 2021-01-27
      • 2015-10-10
      • 2018-11-13
      相关资源
      最近更新 更多