Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.06.2012, 16:32
Интересующийся
Отправить личное сообщение для kliver Посмотреть профиль Найти все сообщения от kliver
 
Регистрация: 07.05.2012
Сообщений: 27

Как получить ответ от сервлета.
Добрый день.

День добрый.

Есть jsp страница, есть сервлет выполняемый по нажатию кнопки. Как получить ответ от сервлета и вывести его в алерт?
Я так и не смог найти способа получения параметров от сервлета не используя jquery. Как впрочем и используя его.
Подскажите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 05.06.2012, 18:26
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

Вы бы хоть код показали для начала..
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2012, 19:28
Интересующийся
Отправить личное сообщение для kliver Посмотреть профиль Найти все сообщения от kliver
 
Регистрация: 07.05.2012
Сообщений: 27

Код чего?
Ну вот форма.
<form action="Upload_Servlet" method="post" enctype="multipart/form-data">
	   <div id="up">
	    <input id="fileUpload1" type="file" name="filename1"value="Browse..."/>
	   </div>
	   <div>
	    <input id="btnSubmit" type="submit" value="Загрузить">
	   </div>
	   </form>

Вот обратно возвращаюсь на страницу после работы сервлета.
String redictedURL="http://localhost:8080/redicted_test/Home.jsp";
		 response.sendRedirect(redictedURL);


А насколько рационально передавать параметр в строке?
response.sendRedirect( "example.jsp?foo=bar" );

Учитывая что передаю я строку.

Последний раз редактировалось kliver, 05.06.2012 в 19:31.
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2012, 20:28
Интересующийся
Отправить личное сообщение для kliver Посмотреть профиль Найти все сообщения от kliver
 
Регистрация: 07.05.2012
Сообщений: 27

Пытаюсь сделать вот так.

request.setAttribute(error, error);
		 request.getRequestDispatcher("http://localhost:8080/redicted_test/Home.jsp").forward(request, response);

		 String redictedURL="http://localhost:8080/redicted_test/Home.jsp";
		 response.sendRedirect(redictedURL);


Но как и ожидал получаю.
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed

Как иначе отправить ответ в jsp?
Ответить с цитированием
  #5 (permalink)  
Старый 06.06.2012, 00:31
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

kliver,
для начала задать вопрос на форуме по java а не javascript
Ответить с цитированием
  #6 (permalink)  
Старый 06.06.2012, 09:20
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

Сообщение от kliver
Вот обратно возвращаюсь на страницу после работы сервлета.
Вот чтобы не заморачиваться по поводу возврата на исходную страницу в вашем случае можно использовать iframe в качестве ajax-транспорта (читать здесь) или же HTML5 FileApi если поддержка старых браузеров для вас не играет большой роли. Рекомендую почитать:
http://www.html5rocks.com/ru/tutorials/file/xhr2/
http://javascript.ru/node/7686

Но это только то что касается клиентской части, если говорить о серверной стороне, то сервлет должен отдавать в поток лишь информацию о том удалось ли загрузить файл или нет. Суть примерно такова:
...
// например переопределяем метод service (можно также doPost и/или doGet)
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
	PrintWriter pwt = res.getWriter();
	try {
		// сначала надо проверить является ли запрос req multipart/form-data
		boolean isMt = ServletFileUpload.isMultipartContent(req);
		if ( !isMt ) {
			res.sendError(HttpServletResponse.SC_BAD_REQUEST);
			return;
		}
		...
		/**
		*  Здесь читаем файл (данные о файле) и создаем новый объект.
		*  Точно не скажу какие пакеты понадобятся для этого, знаю что у апача есть org.apache.commons.fileupload
		*/
		...
		pwt.println("{\"success\":true}"); // наличие в ответе параметра success позволит определить (на клиенте) удалось ли загрузить файл
	} catch(Exception e) {
		e.printStackTrace();
	} finally {
		pwt.close();
	}
}
...

Томкат сейчас у себя нет возможности поднять, поэтому в коде возможны ошибки (не проверял), но двигаться вам нужно в этом направлении.
Ответить с цитированием
  #7 (permalink)  
Старый 06.06.2012, 16:08
Интересующийся
Отправить личное сообщение для kliver Посмотреть профиль Найти все сообщения от kliver
 
Регистрация: 07.05.2012
Сообщений: 27

Оказалось что параметры нужно принимать вот таким способом

alert("${error}");



Это все хорошо, но теперь при загрузке страницы я сначала получаю пустой алерт. Как избавиться от этого? Предлагают использовать JSTL и такой код.

alert('<c:out value="${key}">')



Но я не понмаю, что делают эти тэги, кто-нибуть может пояснить?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разложить ответ сервера по разным div-ам? brudershaft AJAX и COMET 0 23.04.2012 20:40
Как из строки содержащей namespace получить ссылку на объект? wwwboy Общие вопросы Javascript 2 07.12.2011 09:22
Как получить значение TD zsaz jQuery 3 16.11.2011 16:00
как получить загружений урл iframe или frame NOCaut Events/DOM/Window 0 15.11.2011 14:51
Как получить список всех установленных плагинов VitAngel Internet Explorer 0 15.07.2009 09:13