получение значений параметров сервлета из фильтра

#java #forms #servlets #servlet-filters

#java #формы #сервлеты #сервлет-фильтры

Вопрос:

Я отправляю post-запрос из формы в сервлет перенаправления. Затем сервлет записывает форму в свой объект ответа (getWriter). Эта форма содержит несколько скрытых полей. Я использую javascript для отправки этой формы (javascript также записывается в объект ответа). Целью этой формы является другой сервлет.

Теперь я пишу фильтр для перехвата скрытых параметров, которые я отправляю другому сервлету (на другой сервер). Однако, когда я делаю: String[] values = req.getParameterValues(имя);

Я не получаю никаких значений ни для одного из параметров, которые я ввел в строку «name». Я не могу изменить архитектуру кода (не мою). Мне просто нужно получить параметры, отправленные первым сервлетом в моем фильтре, но я продолжаю получать null. Любая помощь приветствуется.

мой первый код сервлета:

     PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>redirectServlet</title></head>");

    out.println("<body>");
    out.println("<form name="go" method="post" action="http://"   
                remotehost   "/somerep/someservlet?">");



    out.println("<input type=hidden name=userid value="   conn   "> ");

    out.println("<input type=hidden name=paramform value=no> ");
    out.println("<input type=hidden name=nonblocksql value=no> ");
    out.println("<input type=hidden name=recursive_load value=no> ");
    out.println("<input type=hidden name=job_seq_id value="   jobId   ">");
    out.println("<input type=hidden name=destype value=cache> ");
    out.println("<input type=hidden name=desformat value=pdf> ");
    out.println("</form> ");

    out.println("<script language="JavaScript" type="text/javascript"> ");
    out.println("document.getElementById('go').submit();");
    out.println("</script>");

    out.println("</body>");
    out.println("</html>");
 

Комментарии:

1. Трудно сказать, не видя какого-либо кода

2. Мэтт, я обновил свой вопрос с помощью некоторого кода. Этот сервлет отправит форму с использованием javascript указанному удаленному сервлету. Я хочу перехватить этот запрос с помощью фильтра сервлета на удаленном компьютере / сервере сервлета.

3. Вам действительно следует рассмотреть возможность использования JSP для HTML-частей и сервлетов для логических частей.

4. Из любопытства, почему вы просто не отправляете HTTP-сообщение от имени браузера? Текущая реализация является своего рода WTF.

5. @MattBall я подумал то же самое, поверьте мне! Моя задача — просто написать фильтр (или, чтобы выполнить свою работу, мне нужно написать фильтр). Я понятия не имею, почему они решили сделать это так… @Pilipp правда, так будет лучше, но я работаю в рамках созданного проекта в фреймворке под названием ADF (sux!). В любом случае, спасибо за ваши ответы.

Ответ №1:

В этом сгенерированном HTML нет элемента с идентификатором go . Изменить

 out.println("<form name="go" method="post" action="http://"   
// to
out.println("<form id="go" method="post" action="http://"   
 

Комментарии:

1. Хороший улов, однако это работает с точки зрения вызова удаленного сервлета… Я изменюсь и посмотрю, будет ли это иметь значение. Спасибо!: только что попробовал .. похоже, это не имеет значения в IE. Я могу получить заголовки нормально, но не скрытые параметры.