19
ДонНУ, кафедра КТ, проф. В. К. Толс тых Технологии Технологии разработки разработки Internet Internet - - приложений приложений Среда Среда Delphi: Delphi: CGI, ISAPI CGI, ISAPI приложения приложения Базы данных Базы данных Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета

Технологии разработки Internet -приложений

  • Upload
    lucus

  • View
    44

  • Download
    4

Embed Size (px)

DESCRIPTION

Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета. Технологии разработки Internet -приложений. Среда Delphi: CGI, ISAPI приложения Базы данных. - PowerPoint PPT Presentation

Citation preview

Page 1: Технологии разработки  Internet -приложений

ДонНУ, кафедра КТ, проф. В. К. Толстых

Технологии Технологии разработки разработки InternetInternet--приложенийприложений

Среда Среда Delphi: Delphi: CGI, ISAPI CGI, ISAPI приложенияприложения

Базы данныхБазы данных

Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета

Page 2: Технологии разработки  Internet -приложений

Работа с базами данных(реляционные, навигационные)

Реляционные БД. Примеры SQL-запросов

Select * From Shope.dbf выбрать все поля из таблицы Shope.dbf

Select Product,Price From Shope выбрать поля Product и Price из Shope.dbf

Select Product,Price From Shope выбрать поле Product, где данные начинаются where Product like “CPU”||”%” на CPU (|| - объединить, % - любые символы)

Update Shope записать в таблицу Shope.dbf Set name = “unknown” unknown в поле name salary = “0” и 0 – в salary, where number Between -1 and 1 если поле number содержит данные от -1 до +1

Insert Into Shope добавить в таблицу Shope.dbf (code, date) поля code, dateValues (1, 31.12.2005) и заполнить их значениями 1 и 31.12.2005

Page 3: Технологии разработки  Internet -приложений

Tableдоступ к данным навигационной БД

Основные свойства Table:

DataBaseName – псевдоним БД TableName :String – файл таблицы БД Active :Boolean – открыть, связаться с таблицей

Основные методы Table:

Open – открыть, связаться с таблицей (Active:=True;) Close – разорвать связь с таблицей (Active:=False;)

Page 4: Технологии разработки  Internet -приложений

Queryдоступ к данным реляционной БД

Основные свойства Query:

DataBaseName – псевдоним БД Active :Boolean – открыть, связаться с таблицей

SQL :TStrings – SQL-запрос, его методы – Clear, Add(‘строка SQL’) RequestLive :Boolean – разрешение на перезапись в БД

Text :PChar – текст запроса

Основные методы Query:

Open – связаться, согласно SQL (Select), с таблицей (Active:=True;)Close – разорвать связь с таблицей (Active:=False;) ExecSQL – сформировать, проверить и выполнить SQL-запрос для

изменений БД (вместо Open)

Page 5: Технологии разработки  Internet -приложений

Query – Пример

Query1.Close; – отключить БД (на всякий случай)

Query1.SQL.Clear; – очистить запрос (на всякий случай)

Query1.SQL.Add(‘Select * from test’) – составить запрос Select

Query1.Open – подключить БД, выполнить SQL-запрос

Вместо метода Query1.Close можно использовать свойство Query1.Active:=False

Вместо метода Query1.Open можно использовать свойство Query1.Active:=True

Page 6: Технологии разработки  Internet -приложений

DataSourceпосредник доступа к БД для других компонент

Основное свойство:DataSet – псевдоним БД

Например,

DBGrid1.DataSource:=DataSource1;

SessionСоздает отдельные потоки доступа к БД для каждого запроса клиента (актуально для ISAPI)

Основное свойство Session:

AutoSessionName :Boolean – разрешение разным клиентам на одновременный доступ к БД (True)

Page 7: Технологии разработки  Internet -приложений

QueryTableProducerгенератор HTML-таблиц на основе SQL-запросов

Основной метод:

Content – распознает POST/GET-запрос, выделяет из него параметры,инициализирует компонент Query, подставляет полученные параметрыв SQL-контейнер Query, подключает БД, создает HTML-таблицу

Количество параметров в SQL-запросе должно точно совпадать с количеством параметров в Web-запросе.

Параметры SQL-запроса - :параметр Например,

Select Product, Price From Shope where Product like :CPU || ”%”

Page 8: Технологии разработки  Internet -приложений

QueryTableProducer

Основные свойства:

Query – имя компонента Query, содержащего SQL-запрос

Caption :String – HTML-код заголовка таблицы

Header :TStrings – HTML-код страницы перед таблицей (м.б. PageProducer)

Footer :TStrings – HTML-код страницы после таблицы (м.б. PageProducer

Columns – массив колонок: Count, Columns[i].BgColor='Gray‘…

визуаль- RowAttributes – свойства строк (атрибуты <Tr>): Align, BgColor, VAlign

ные TableAttributes – свойства таблицы (атрибуты <Table>): Align, BgColor, Border…

Переменные BgColor, Align… описаны в модуле HTTPProd

Page 9: Технологии разработки  Internet -приложений

QueryTableProducer:

Header:<html><body><p><u> Ответ Web-сервера </u></p>

<Center><H1> Электронный магазин </H2></Center><p>

Footer:<p><b><i> Спасибо за интерес! </i></b></p></body></html>

Page 10: Технологии разработки  Internet -приложений

Визуальная настройка HTML-таблицы

2 click

Свойство Active:=True

Если нет параметров в свойстве SQL

Page 11: Технологии разработки  Internet -приложений

QueryTableProducer

Основные события:

onCreateContent – перед генерацией HTMLкода, параметр Continue:=False – отмена генерации

onGetTableCaption – перед генерацией заголовка таблицы, параметр Caption:=‘HTML string’

onFormatCell – перед генерацией каждой ячейки, параметр CellColumn :Integer – номер колонки

параметр CellRow :Integer – номер строки

параметры форматирования BgColor, Align, VAlign

параметр CellData :string – HTML содержимое ячейки

Page 12: Технологии разработки  Internet -приложений

Рекомендации для начального тестирования Web-приложения

1. Создать Web-модуль, поместить Query1, QueryTableProducer1, Session1

2. В Session1 установить AutoSesionName:=True;

В QueryTableProducer1 заполнить DataBaseName и Query:=Query1;

В Query1 заполнить SQL-контейнер (для тестирования – Select *…

без параметров) и установить Active:=True;

3. 2 click на QueryTableProducer1 и настроить визуально HTML-таблицу;

4. Далее можно программировать передачу и прием Web-параметров,

усложнять вид HTML-таблицы, записывать данные в БД (разрешить NTFS

запись в фалы БД) и т.п.

Page 13: Технологии разработки  Internet -приложений

Пример работы с БД

Shope.dbf

Запрос клиента

Page 14: Технологии разработки  Internet -приложений

Пример работы с БДОтвет сервера

Page 15: Технологии разработки  Internet -приложений

Настройка компонент -

БД (Таблица) – создать Alias ShopeCPU, разрешить NTFS запись в фалы БД

Свойства Query1 – DatabaseName: ShopeCPU

SQL: Select Product,Price From Shope.dbf - простой запрос для тестирования

Аctive: True (подключение БД согласно SQL)

Свойства QueryTableProducer1 – Query: Query1Caption: Таблица процессоров серии Header: <html><body><p><u> Ответ Web-сервера </u></p>

<Center><H1> Электронный магазин </H2></Center><p>Footer: <p><b><i> Спасибо за интерес! </i></b></p>

</body></html>Columns: … (визуально)

Свойства Session1 –АutoSessionName: True

Page 16: Технологии разработки  Internet -приложений

Запрос клиента

<html><body>

<Center> <H1> Электронный магазин </H2></Center><form method="POST" action="http://localhost/net-web/

Scripts/ResponseSQL.exe"><input type="radio" name="CPU" value="Celeron-600" checked> Показать таблицу процессоров серии Celeron<br><input type="radio" name="CPU" value="P-2"> Показать таблицу процессоров серии P-2<br><input type="radio" name="CPU" value="P-3"> Показать таблицу процессоров серии P-3<br><input type="radio" name="CPU" value="P-4"> Показать таблицу процессоров серии P-4<P><input type="Submit" value="Отправить"></P></form></body></html>

Page 17: Технологии разработки  Internet -приложений

Простые примеры ответа сервера,

обработчик события onAction

Пример простого обработчика onAction:procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);begin Response.Content:=QueryTableProducer1.Content;end;

Пример SQL запроса без параметров (тестирование связи):Query1.SQL:

Select Product,Price,Demand From Shope.dbfwhere Product like “P-2" || "%"

Пример SQL запроса с параметром:Query1.SQL:

Select Product,Price,Demand From Shope.dbfwhere Product like :CPU || "%"

Ответ – только процессоры P-2…

Ответ – процессоры в соответствие с одним

параметром CPU в запросе

Page 18: Технологии разработки  Internet -приложений

Усложненные примеры (чтение/запись в БД)

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);begin // сформировать Web-клиенту требуемую (параметр :CPU) таблицу:Response.Content:=QueryTableProducer1.Content; Response.SendResponse; // отправить таблицу Web-клиенту // занести в базу данные об этом запросе: With Query1 Do begin Close; SQL.Clear; SQL.Add('Update Shope.dbf'); SQL.Add('Set Demand=Demand+1'); // статистика запросов SQL.Add('where Product'); SQL.Add(' like "'+Request.ContentFields.Values['CPU']+'" || "%"'); ExecSQL; // составить, проверить и выполнить SQL-запрос Close; end;end;

Page 19: Технологии разработки  Internet -приложений

Обработчик события onGetTableCaption

// Оформление заголовка таблицыprocedure TWebModule1.QueryTableProducer1GetTableCaption(Sender: TObject; var Caption: String; var Alignment: THTMLCaptionAlignment);begin Caption:='<b>Таблица процессоров серии '+ Request.ContentFields.Values['CPU']+'</b>';end;

Обработчик события onFormatCell

procedure TWebModule1.QueryTableProducer1FormatCell(Sender: TObject; CellRow, CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign;

var VAlign: THTMLVAlign; var CustomAttrs, CellData: String);begin if (CellRow>0)and(CellColumn=0) Then // в первом столбце, кроме заголовка -

CellData:=' <A href="URL">'+CellData+' - заказать</A>';end;