Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Как из одного сервлета передать данные в другой?


Автор: Dzo 11.6.2008, 11:58
Собсно сабж.

Методом get я знаю как: 

Код

response.sendredirect(MyServlet?data1=value1);


А как методом POST?

Сессии, куки не актуально. Нужно  именно методом POST.

Автор: xeye 11.6.2008, 12:31
Цитата(Dzo @ 11.6.2008,  11:58)
А как методом POST?

Сессии, куки не актуально. Нужно  именно методом POST.

POST _редирект_ невозможен по http стандарту. 
можно просто из сервлета сделать post запрос. например, через HttpURLConnection, а затем надо будет куда-то все-таки перейти из основного сервлета.

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

Автор: Dzo 11.6.2008, 12:55
Какие средства?

RequestDispatcher?

Автор: AntonSaburov 11.6.2008, 13:26
Цитата(Dzo @  11.6.2008,  12:55 Найти цитируемый пост)
RequestDispatcher? 

Угу

Автор: Dzo 12.6.2008, 10:21
Пытаюсб передать данные между двумя сервлетами

Код


String msgText = "Hehehey!";
String type = "error";
String url = "/menuelements.jsp";
String parameters = "Set of parameters";
                
request.setAttribute("msgText", msgText);
request.setAttribute("type", type);
request.setAttribute("url", url);
request.setAttribute("parameters", parameters);
                
RequestDispatcher dispatcher = request.getRequestDispatcher("/Messages");
                
if (dispatcher == null) {
   System.out.println("Dispathcer is null");
} else {
dispatcher.forward(request, response);}



Принимающий Servlet:

Код


String messageType = request.getParameter("type");
        
System.out.println(messageType);
        
if (messageType.equals("done")) {
            createOKMessage(request, response);
} else {
createErrorMessage(request,response);
}



Вываливается NullPointerException на строку 

Код

if (messageType.equals("done")) {


следовательно параметр не передается. В чем хня?

Я читал втуториалах, что RequestDispatcher нужно вызывать до того, как потеряется содержание responsa. Кажется, что проблема в этом, объясните подробней : (

Автор: xeye 12.6.2008, 10:29
Цитата(Dzo @ 12.6.2008,  10:21)
Я читал втуториалах, что RequestDispatcher нужно вызывать до того, как потеряется содержание responsa. Кажется, что проблема в этом, объясните подробней : (

если делаешь setAttribute то и читай его через getAttribute, а не как попало smile

Автор: Dzo 12.6.2008, 11:08
Цитата(xeye @  12.6.2008,  10:29 Найти цитируемый пост)
а не как попало


 smile Вырыжает всю суть моего действа : )) Ыгыгы

Автор: koroplysov 8.4.2011, 12:38
Я делал такое. Все очень просто. Формируется html страница где есть форма с инпутами или с чем там еще надо передать. В инпуты заполняем данные. Делаем обработчик страницы где прописываем нажатие на сабмит на JS. У меня было переделано в виде ссылки а не кнопка и там просто вызывается метод сабмит. Я поищу и выложу код.

Добавлено через 8 минут и 45 секунд
Короче формируй html страницу и отправляй пользователю. а body должно выглядеть так:
Код

<body  onload="javascript: document.name=FormName.submit(); return false;">


И все. При загрузке у пользователя сработает пост по соответствующему адресу. можно visible настроить чтоб не видели что отправляешь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)