Показать сообщение отдельно
  #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();
	}
}
...

Томкат сейчас у себя нет возможности поднять, поэтому в коде возможны ошибки (не проверял), но двигаться вам нужно в этом направлении.
Ответить с цитированием