после 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 =»многочастному / форм-данных» // когда я удаляю его работает нормально

Ответы на вопрос(3)

multipart/form-data отправляются в теле POST - не как обычные параметры запроса, поэтому могутне может быть прочитано с помощью.request.getParamter(...)

Проверять, выписыватьсяЗагрузка файла Commons пакет для обработки многочастных запросов.

 BalusC19 окт. 2012 г., 15:18
Ваша первая фраза не имеет смысла. Также безmultipart/form-dataданные по-прежнему отправляются в теле запроса (это контролируетсяmethod="post"неenctype). Это'просто по-разному закодированы. Кодировка по умолчаниюname1=value1&name2=value2&name3=value3Однако сmultipart/form-data Есть несколько блоков, каждый со своими заголовками, разделенными границей. Например, см.RFC2388.
Решение Вопроса

Если вам это нужно для того, чтобы загрузить файл который вы намереваетесь добавить позже, тогда вы должны поставить@MultipartConfig аннотации на ваш сервлет, так чтоrequest.getParameter() будет работать, и все загруженные файлы могут быть восстановлены.request.getPart()

@WebServlet("/Relay")
@MultipartConfig
public class Relay extends HttpServlet {   
    // ...
}
Смотрите также:Как загрузить файлы на сервер, используя JSP / Servlet?
 Amal Prasad19 окт. 2012 г., 16:34
Я новичок в JSP :(
 Amal Prasad19 окт. 2012 г., 15:33
но rd.forward (запрос, ответ); не работает
 BalusC19 окт. 2012 г., 15:35
Тот'Это другая проблема, не связанная с тем, как форма отправляется. Если вам нужна помощь, нажмитеAsk Question, Вам нужно только по-настоящему разобраться в проблеме, а не просто сказать:не работает", Исследуй и опиши проблему в застройщикес точки зрения, а не в конечном итогес точки зрения. Возможно (относительный) путь был просто неправильным?
 BalusC08 июн. 2014 г., 09:59
@ jasmeet24: я неПубликовать ссылки только для оформления. Нажмите на них, если вы хотите узнать больше.
 jasmeet2408 июн. 2014 г., 09:50
@BalusC, как справиться с этим, если ям, используя версию 2.5, а не 3.0
 Amal Prasad19 окт. 2012 г., 16:17
я имею в виду, когда я добавляю@WebServlet (»/Реле")' '@MultipartConfig» переслать сервлет вперед, но проблема в том, что загрузка файла не работает List items = uploadHandler.parseRequest (request); вот как яЯ получаю запрос
 BalusC19 окт. 2012 г., 16:36
В ответ я нигде не сказал, что вы должны использовать загрузку файла. Я сказал, что вам просто нужно поставить@MultipartConfig аннотации на сервлете, а затем использоватьrequest.getPart() получить файл. Тот'все. Связанный ответ содержит более сложный пример использования.request.getPart()
 BalusC19 окт. 2012 г., 16:20
А? Почему вы используете закачку файлов вместоrequest.getPart()? Ты неТебе вообще не нужна загрузка файла общего пользования, если тыВы уже используете Servlet 3.0@MultipartConfig, Пожалуйста, прочитайтеСмотрите также" ссылка еще раз осторожно.

ладок. если вы застряли и хотите узнать, какие все параметры поступают через многочастный запрос, вы можете распечатать все параметры, используя следующий код.

MultipartRequest multi = <your code="" to="" retrieve="" multipart="" request="" goes="" here.="" sorry="" but="" can="" not="" post="" as="" i="" use="" proprietary="" apis="">  

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

        }
</your>

Ваш ответ на вопрос