JSP Request.getParameter () возвращает ноль - PullRequest
0 голосов
/ 25 марта 2020

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>

upload. 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. Но оба возвращают меня к нулю.

1 Ответ

0 голосов
/ 25 марта 2020

При использовании 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();
     ... }
...