Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Flamе
9 / 9 / 1
Регистрация: 25.10.2009
Сообщений: 152
#1

Получить атрибут запроса после его выполнения

11.01.2013, 01:23. Просмотров 1029. Ответов 4
Метки нет (Все метки)

Привет) такая проблема, есть сервлет, который загружает на сервер картинку, выбранную пользователем. внутри сервлета в методе doPost выполняется такая строчка:
Java
1
request.setAttribute("fileName", fname);
Теперь на странице jsp идёт вызов метода Post, после чего я пытаюсь извлечь атрибут fileName:
HTML5
1
2
3
4
5
6
7
8
<form name="uploadFileForm" method="POST" action="/load" enctype="multipart/form-data">
        <table>
            <tr><td><input type="file" name="file" size="30" /></td></tr>
            <tr><td><input name="uploadButton" type="submit" value="Загрузить файл"/></td></tr>
        </table>
        <%--<h:graphicImage value="pictures/<%=request.getAttribute("imgName")%>" />--%>
 
        <img src="pictures/<%=request.getAttribute("imgName")%>" width="100" height="100" >
но видимо последняя строка выполняется ещё до того, как выполнился метод doPost, в результате никакой картинки нет... Что делать? помогите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 01:23
Ответы с готовыми решениями:

Stateful session bean. Для чего нужен Timeout и что делать после его выполнения
Добрый день. У меня такой вопрос. Начну сразу с простого кода одного ejb и...

Как получить результата cgi запроса?
Всем привет. Вопрос: Например есть такой url:...

Загрузка апплета в браузер после запроса к сервлету.
есть кусок программы с сервлетом и апплетом. Загружаем сервлет в среде...

Помогите получить значение после выполнения запроса
Set Conn = Server.CreateObject('ADODB.Connection') Set rs =...

Кодировка после выполнения запроса
Имеется таблица CREATE TABLE `gtd` ( `ND` char(23) NOT NULL DEFAULT '', ...

4
raiderx
66 / 55 / 11
Регистрация: 16.04.2010
Сообщений: 190
Записей в блоге: 1
11.01.2013, 11:37 #2
Я думаю, Вы разные атрибуты устанавливаете и потом читаете.
0
Flamе
9 / 9 / 1
Регистрация: 25.10.2009
Сообщений: 152
11.01.2013, 12:15  [ТС] #3
Цитата Сообщение от raiderx Посмотреть сообщение
Я думаю, Вы разные атрибуты устанавливаете и потом читаете.
ой, я извиняюсь)) просто строки вверху от руки писала, и название из головы взяла=) а потом скопировала код из программы и забыла поменять названия.

на самом деле в код написано так: в jsp
HTML5
1
2
3
4
5
6
7
8
    <form name="uploadFileForm" method="POST" action="/load" enctype="multipart/form-data">
        <table>
            <tr><td><input type="file" name="file" size="30" /></td></tr>
            <tr><td><input name="uploadButton" type="submit" value="Загрузить файл"/></td></tr>
        </table>
        <%--<h:graphicImage value="pictures/<%=request.getAttribute("imgName")%>" />--%>
 
        <img src="pictures/<%=request.getAttribute("imgName")%>" width="100" height="100" >
в сервлете:
Java
1
request.setAttribute("imgName", fileName);
0
raiderx
66 / 55 / 11
Регистрация: 16.04.2010
Сообщений: 190
Записей в блоге: 1
11.01.2013, 12:31 #4
Цитата Сообщение от Flamе Посмотреть сообщение
Теперь на странице jsp идёт вызов метода Post
Объясните, как Вы это понимаете? JSP формирует разметку в самом простом варианте.
Никакого "вызова метода Post" я не увидел в вашем коде.
Приведенный Вами фрагмент формирует HTML-форму. Эта форма отправляет изображение на сервер.
HTML-тэг <img ...> на этом этапе не к месту, так как изображение еще не загружено на сервер.

Только после того как оно будет выбрано пользователем, загружено на сервер, обработано Вашим сервлетом, его можно отобразить.

Цитата Сообщение от Flamе Посмотреть сообщение
Что делать?
Я вам советую сделать две страницы:
1) Страницы для загрузки изображения
2) Страница для отображения загруженного изображения

И еще: я надеюсь, атрибут imgName хранит только имя изображения, а не полный путь к локальному файлу?
А также это изображение доступно в браузере по ссылке вида: http://<ваш сервер>:<возможно порт>/<какой-то путь>/pictures/<имя изображения>
1
Flamе
9 / 9 / 1
Регистрация: 25.10.2009
Сообщений: 152
11.01.2013, 16:07  [ТС] #5
Цитата Сообщение от raiderx Посмотреть сообщение
Объясните, как Вы это понимаете? JSP формирует разметку в самом простом варианте.
Никакого "вызова метода Post" я не увидел в вашем коде.
Приведенный Вами фрагмент формирует HTML-форму. Эта форма отправляет изображение на сервер.
HTML-тэг <img ...> на этом этапе не к месту, так как изображение еще не загружено на сервер.

Только после того как оно будет выбрано пользователем, загружено на сервер, обработано Вашим сервлетом, его можно отобразить.


Я вам советую сделать две страницы:
1) Страницы для загрузки изображения
2) Страница для отображения загруженного изображения

И еще: я надеюсь, атрибут imgName хранит только имя изображения, а не полный путь к локальному файлу?
А также это изображение доступно в браузере по ссылке вида: http://<ваш сервер>:<возможно порт>/<какой-то путь>/pictures/<имя изображения>
да, imgName хранит только имя) спасибо большое!) через две страницы получилось) но почему то не все картинки отображаются, хотя формат у всех jpg. пока не поняла с чем это связано, но хорошо, что хоть какой-то сдвиг есть)

Добавлено через 6 минут
хотя поняла. те фотографии, которые я загружаю первый раз - не отображаются. потом если запустить приложение ещё раз и загрузить опять такую картинку, то она уже загружается...

Добавлено через 2 часа 49 минут
интересно, почему так?...такое ощущение,что HTML-тэг <img ...> либо начинает работать до того, как картинка сохранилась в папку pictures (хотя как-то это не логично, ведь сначала сервлет отрабатывает код, а потом уже тэг), либо этот тэг использует старую информацию о файлах в папке...
0
11.01.2013, 16:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2013, 16:07

Вывод сообщения после выполнения запроса
Здравствуйте! Прошу помочь: Нужно чтобы запрос сравнивал наличие в БД...

Освобождение памяти после выполнения SQL запроса
Моя программа последовательно выполняет простые запросы к двум БД, извекая из...

Обновление первичного ключа после выполнения запроса
У меня в классе есть такой метод: public void Delete(int id) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru