OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 19 Февраль, 2018 13:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Суббота, 01 Март, 2014 21:13 
Аватара пользователя

Зарегистрирован: Среда, 19 Февраль, 2014 21:15
Сообщения: 18
Пётр Кушнир писал(а):
Код:
Log.String('запрос'); Log.Ln;

Петр! Очень прошу Вас, покажите пример с html-формой, посылающей сервлету хотя бы что-нибудь. Прием сообщений после PHP кажется сложноватым. Снизойдите пожалуйста до неофита! Буду очень благодарен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Март, 2014 14:20 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2461
Откуда: Россия, Ярославль
Далее я разместил код хэндлера Do, предполагается, что остальной код модуля не меняется. По сути, ему и не надо меняться, весь сервлет расположен в этом методе.

В сообщении m есть описание запроса .rq, и, в зависимости от запроса есть еще и данные .query.
Опишем простую форму, которая будет использовать метод POST для отправки данных на сервер.
Данные на сервер отправляются на адрес "/".
На сервере мы анализируем запрос, и если вдруг POST, то проверяем .query на NIL. Query содержит в себе список полей с идентификаторами, поэтому можно просто запросить по идентификатору значение этого поля val.
Далее мы значение поля отправляем обратно в виде строки. Вот и всё.
Код:
   PROCEDURE (s: Servlet) Do (m: O3baseWebServlets.Msg);
      VAR file: O3baseFiles.File; val: O3baseWebHttp.QVal;

      PROCEDURE Generate (IN text: ARRAY OF CHAR);
         VAR wr: O3baseFiles.Writer; i: INTEGER;
      BEGIN
         file := O3baseFiles.factory.Temp();
         wr := file.WrNew();
         i := 0;
         WHILE i < LEN(text$) DO
            wr.Char(text[i]);
            INC(i)
         END
      END Generate;

   BEGIN
      Log.String(m.rq.uri$); Log.Tab; Log.String(m.rq.method$); Log.Ln;
      IF (m.rq.uri$ = '/') THEN
         IF m.rq.method$='GET' THEN
            Generate('<html><body><form method="post" action="/"><input name="text"><input type="submit"></form></body></html>'); (* как будто загрузили с диска *)
         ELSIF m.rq.method='POST' THEN
            IF m.query#NIL THEN val:=m.query.Get('text') END;
            IF val#NIL THEN
               Generate('Hello, world!'+'</br>'+val.sp$);
            END;
         END;
      END;
      IF file # NIL THEN m.Respond(O3baseWebHttp.ResponseUtf8Html(file)) END;
   END Do;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Март, 2014 14:33 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2461
Откуда: Россия, Ярославль
Но вообще сейчас ведь модно делать веб-приложения на стороне клиента, а на сервере выполнять только серверную часть работы.
http://ru.wikipedia.org/wiki/REST http://ru.wikipedia.org/wiki/Ajax


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Март, 2014 20:09 
Аватара пользователя

Зарегистрирован: Среда, 19 Февраль, 2014 21:15
Сообщения: 18
Пётр Кушнир писал(а):
Но вообще сейчас ведь модно делать веб-приложения на стороне клиента, а на сервере выполнять только серверную часть работы.
http://ru.wikipedia.org/wiki/REST http://ru.wikipedia.org/wiki/Ajax

Но тогда педагогический потенциал BB будет же не причём? о3 я хочу использовать, чтобы программы, написанные кружковцами в ВВ, можно было использовать для iframe приложений в ВКонтакте. Для соблазнения и воодушевления обучающихся на продолжительную работу.
PS. За пример большое спасибо. Именно это я и хотел найти.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Апрель, 2014 15:09 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Ответил в теме Обучение на Обероне и Компонентном Паскале


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB