Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Java: внутри файла MS Excel 2007. Часть четвёртая   В публикуемой сегодня части статьи заканчивается описание процедур загрузки электронной таблицы и начинается описание самого интересного - каким образом получить данные, хранящиеся в ячейках таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть третья   В предлагаемой вниманию читателя третьей части статьи о структуре файла электронной таблицы Microsoft Excel формата 2007 речь идёт о коде Java, "разархивирующем" файловый поток и формирующем объекты, с которыми предстоит взаимодействовать при дальнейшей обработке данных электронной таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть вторая   В настоящем материале автор постарается систематизировать свои знания о том, как устроено хранение данных электронной таблицы, и презентовать небольшую Java-библиотеку, предоставляющую возможность чтения данных и заполнения файла электронной таблицы Microsoft Excel
Шаблоны и примеры Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть первая

Николай Норкин

г. Киров

notesnet@notesnet.ru

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть вторая

Новый цикл материалов проекта NotesNet.RU начинается описанием сервлета UploadProcess - решения для обработки post-запросов к http-задаче сервера Domino

Стандартная обработка Post-запросов HTTP-задачей Domino предусматривает либо обработку на уровне ответной формы (сохранение документа - запросы ?createDocument и ?saveDocument с дополнительной обработкой webQuerySave-агентом), либо обработку непосредственно агентом

И в том, и в другом случае автору не удалось решить задачу обработки загружаемых данных с возможностью гибкой обработки файлов до момента их сохранения в базе Lotus Domino. Собственно, само сохранение без обработки агентом вообще не предусматривает какие-либо манипуляции с файлами. При обработке агентом автор не смог получить содержимое Post-запроса до его обработки web-engine Domino

Вот такой код, выгружающий в поток значения из айтемов request_content_xxx, добирается до содержимого уже после его преобразования в текстовый вид да ещё и в кодировке CP850

Session session = getSession();

AgentContext agentContext = session.getAgentContext();

lotus.domino.Document document = agentContext.getDocumentContext();

java.util.Vector streams = new java.util.Vector();

streams.add(new java.io.ByteArrayInputStream("Content-Type: multipart/form-data;  charset=Windows-1251; boundary=\"".concat(header).concat("\"\r\n\r\n").getBytes("UTF-8")));

if (this.document.hasItem("request_content")) {

item = this.document.getFirstItem("request_content");

streams.add(item.getInputStream());

}

else {

for (int i = 0; i < 1000; i++) {

String itemname = "request_content_";

String suffix = "000";

suffix = suffix.concat(new Integer(i).toString());

suffix = suffix.substring(suffix.length() - 3);

itemname = itemname.concat(suffix);

if (this.document.hasItem(itemname)) {

item = this.document.getFirstItem(itemname);

streams.add(item.getInputStream());

}

}

}

streams.add(new java.io.ByteArrayInputStream("\r\n--".concat(header).concat("--").getBytes("UTF-8")));

stream = new java.io.SequenceInputStream(streams.elements());

java.io.ByteArrayOutputStream byteStream = new java.io.ByteArrayOutputStream();

byte[] buffer = new byte[1024];

while (true) {

int r = stream.read(buffer);

if (r == -1) break;

byteStream.write(buffer, 0, r);

}

Попробовав выковырять содержимое post-запроса различными способами, но так и не добившись нужного результата в коде агента Notes, автор перенёс решение на сервлет, и в настоящем материале представляет данное решение

Сервлет разрабатывался в среде Eclipse IDE 4.10, протестирован для работы в среде Lotus Domino 8.5.3 и 10.0 и работает в настоящее время на сервере Domino 8.5.3 под Linux

Для обработки multipart-содержимого запроса использовался пакет проекта Apache Commons FileUpload, для сохранения файлов в документе Notes слегка модернизированный пакет Memo (смотри предыдущий материал NotesNet.RU)

Дополнительно (кроме Notes.jar) к проекту были подключены пакеты


Ну, и ещё один необходимый элемент для работы сервлета. Поскольку решение претендует на универсальность обработки запросов, никак не обойтись без базы настроечных документов для обработки различных post-запросов к сервлету (скачать архив)

Сам настроечный документ будет иметь следующий вид


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

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть вторая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть третья

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть четвёртая

Задача Domino HTTP. Обработка загружаемых файлов сервлетом UploadProcess. Часть пятая

Код сервлета

Ссылки

Java в Domino. Библиотека Memo

Apache Commons FileUpload

Задача Domino HTTP. Агент Скачать файлы одним архивом и обработка отдаваемых пользователю файлов
 
  Опубликовано — 02/07/2021 |    



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Lotus notes и ЭЦП
29.09.2017 17:16:14
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
 
© LOGOSPHERE.RU