1 / 19

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

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

lucus
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Работа с базами данных(реляционные, навигационные) Реляционные БД. Примеры 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, date Values (1, 31.12.2005) и заполнить ихзначениями 1 и 31.12.2005

  3. Table доступ к даннымнавигационной БД Основные свойства Table: DataBaseName – псевдоним БД TableName :String– файл таблицы БД Active :Boolean– открыть, связаться с таблицей Основные методы Table: Open– открыть, связаться с таблицей(Active:=True;)Close – разорвать связь с таблицей(Active:=False;)

  4. 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)

  5. 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

  6. Основное свойство: DataSet – псевдоним БД Например, DBGrid1.DataSource:=DataSource1; DataSource посредник доступа к БД для других компонент Session Создает отдельные потоки доступа к БД для каждого запроса клиента (актуально для ISAPI) Основное свойство Session: AutoSessionName :Boolean– разрешение разным клиентам на одновременный доступ к БД (True)

  7. QueryTableProducer генератор HTML-таблиц на основе SQL-запросов Основной метод: Content – распознает POST/GET-запрос, выделяет из него параметры, инициализирует компонент Query, подставляет полученные параметры в SQL-контейнер Query, подключает БД, создает HTML-таблицу Параметры SQL-запроса - :параметрНапример, Select Product,Price From Shope where Product like :CPU||”%” Количество параметров в SQL-запросе должно точно совпадать с количеством параметров в Web-запросе.

  8. QueryTableProducer Основные свойства: Query – имя компонента Query, содержащего SQL-запросCaption :String– HTML-код заголовка таблицы Header :TStrings– HTML-код страницы перед таблицей (м.б. PageProducer) Footer :TStrings– HTML-код страницы после таблицы (м.б. PageProducerColumns– массивколонок: Count, Columns[i].BgColor='Gray‘…визуаль-RowAttributes– свойствастрок (атрибуты <Tr>): Align, BgColor, VAlign ныеTableAttributes– свойстватаблицы (атрибуты <Table>): Align, BgColor, Border… Переменные BgColor, Align…описаныв модуле HTTPProd

  9. QueryTableProducer: Header: <html> <body> <p><u>Ответ Web-сервера</u></p> <Center><H1>Электронный магазин </H2></Center> <p> Footer: <p><b><i>Спасибо за интерес!</i></b></p> </body> </html>

  10. Если нет параметров в свойстве SQL СвойствоActive:=True 2 click Визуальная настройка HTML-таблицы

  11. QueryTableProducer Основные события: onCreateContent – перед генерацией HTMLкода, параметр Continue:=False – отмена генерации onGetTableCaption – перед генерацией заголовка таблицы, параметр Caption:=‘HTML string’ onFormatCell – перед генерацией каждой ячейки, параметр CellColumn:Integer – номер колонки параметр CellRow:Integer – номер строки параметры форматирования BgColor, Align, VAlign параметр CellData:string – HTML содержимое ячейки

  12. Рекомендации для начального тестирования Web-приложения • Создать Web-модуль, поместить Query1, QueryTableProducer1, Session1 • В Session1 установить AutoSesionName:=True; В QueryTableProducer1 заполнить DataBaseName и Query:=Query1;В Query1 заполнить SQL-контейнер (для тестирования – Select *…без параметров) и установить Active:=True; • 2 click на QueryTableProducer1 и настроить визуально HTML-таблицу; • Далее можно программировать передачу и прием Web-параметров, усложнять вид HTML-таблицы, записыватьданные в БД (разрешитьNTFSзапись в фалы БД) и т.п.

  13. Пример работы с БД Shope.dbf Запрос клиента

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

  15. Настройка компонент - БД (Таблица) – создать Alias ShopeCPU, разрешить NTFS запись в фалы БД Свойства Query1 – DatabaseName: ShopeCPU SQL: Select Product,Price From Shope.dbf - простой запрос для тестирования Аctive: True (подключение БД согласно SQL) СвойстваQueryTableProducer1 – Query: Query1 Caption: Таблица процессоров серии 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

  16. Запрос клиента <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>

  17. Простые примеры ответа сервера, обработчик события onAction Пример SQL запроса без параметров (тестирование связи): Query1.SQL: Select Product,Price,Demand From Shope.dbf where Product like “P-2" || "%" Ответ – только процессоры P-2… Пример SQL запроса с параметром: Query1.SQL: Select Product,Price,Demand From Shope.dbf where Product like :CPU || "%" Ответ – процессоры в соответствие с одним параметромCPU в запросе Пример простого обработчика onAction: procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin Response.Content:=QueryTableProducer1.Content; end;

  18. Усложненные примеры (чтение/запись в БД) procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin // сформировать Web-клиенту требуемую (параметр :CPU) таблицу: Response.Content:=QueryTableProducer1.Content; Response.SendResponse; // отправить таблицу Web-клиенту // занести в базу данные об этом запросе: With Query1 Dobegin 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;

  19. Обработчик события 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;

More Related