Створення WEB-додатків в середовищі Delphi (исходники), Різне, Програмування, статті

Епоха web-дизайну, коли найважливішим вважалося можливість запхати на сторінку як можна більше графіки та уразити користувача широтою фантазії дизайнера, канула в лету. У моді – інформаційний дизайн і всілякі зручності для користувача. Поганим тоном вважається вже одне тільки те, що на сайті немає форуму або гостьової книги, і найжахливіше – о, боже – ви до сих пір верстає кожну сторінку вручну, замість того, щоб доручити сее нудне і стомливе заняття скрипту.

Час першопрохідців HTML незабаром закінчиться і зовсім, і їх місце займуть професіонали-програмісти. Саме програмісти, бо вже більшою мірою від їх уміння створити зручний у використання сайт залежить його успіх. Крім іншого, тепер сайти створюють зовсім вже як програмні продукти: тим хто зайнятий наповненням змістом, вже може не побоюватися заплутатися в html, java, cgi і інших іпостасях інтернет-технологій – адміністрування сайту стає таким же звичним і зручним, як робота з текстовими процесорами. Поки, правда, відчувається явний недолік закінчених продуктів, на плечі яких можна було б покласти всі функції з підтримки сайту в актуальному стані, залишивши собі лише питання щодо наповнення його змістом.

Поки ж тяжкий тягар зі створення даних систем, на основі яких буде функціонувати сайт, лягає на плечі програмістів, тільки ось-ось встигли остовпіє можливостями мови Perl або Java. І багато з них, сказати без перебільшення, вийшли, наче з гоголівської “Шинелі”, з Delphi. Дійсно, дана середу розробника, що надає зручний інтерфейс для візуального програмування і широкі можливості Object Pascal, настільки мила серцю російських програмістів.

Але, схоже, що часи змінюються, і Delphi з середовища створення звичайних настільних додатків, може згодитися і в іншому плані: для написання прикладних web-програм. І дійсно, що може бути краще: вже знайома Середа розробки, вздовж і впоперек вивчений мову, та й досить широке коло фахівців з програмування в Delphi – чи це не плюси створення web-додатків на Delphi. Є звичайно і мінуси: створені програми навряд чи зможуть задовольнити тих, хто вважає, що кращий web-сервер, це сервер не від Microsoft. Але що поробиш – версія Delphi під Unix поки відкладена до кращих часів. Зате поміркуйте самі: перенесення програм у майбутньому світлому майбутньому можна буде зробити з малою кров’ю.

Але відкладемо поки теорію в бік, і звернімося до практики. Отже, створення web-додатки в середовищі Delphi, що називається крок за кроком.

Приклад з підручника


На відміну від інших аспектів створення додатків в Delphi, про створення додатків для web написано мало. Так жахливо мало, що з книги в книгу, з підручника в підручник подорожує один і той же приклад. Не будемо оригінальничати і ми – чим простіше, тим краще.

Взагалі, найпростіше web-додаток на Delphi мало чим відрізняється, а точніше нічим не відрізняється від створення програми для старої доброї DOS. Це – найпростіше консольний додаток, що запускається на стороні сервера і взаємодіють з користувачем (у разі необхідності) через броузер.

Створіть у Delphi новий проект – ту саму вже давно забуту всіма Console Application. Ви отримаєте знайомий зі шкільної лави, текст звичайної паскалевской програми:





program primer;
{$APPTYPE CONSOLE}
uses SysUtils;
begin
// Insert user code here
end.

Далі ще простіше. Організуємо висновок коду HTML за допомогою команди writeln.





 writeln (“CONTENT-TYPE: TEXT/HTML”);
writeln;
writeln (“<html>”);
writeln (“<head>”);
writeln (“<meta HTTP-EQUIV=”Content-Type” Content=”text-html; charset=windows-1251″>”);
writeln (“<title>Delphi the best facility for making web-publications!</title>”);
writeln (“</head>”);
writeln (“<body bgcolor=”white”>”);
writeln (“Hello, world!”);
writeln (“</body>”);
writeln (“</html>”);

Зверніть увагу на рядок CONTENT-TYPE: TEXT / HTML, яка визначає опис подальшого вмісту, а саме коду HTML. Після CONTENT-TYPE: TEXT / HTML, необхідно вивести порожню рядок інакше броузер може видати повідомлення про помилку.

Тепер, коли програма закінчено, залишилося його скомпілювати і перевірити. Для перевірки працездатності програми вам знадобитися веб-сервер. Можна особливо не напружуватися, підійде будь-який, навіть стандартний домашній веб-сервер від Microsoft. Додаток треба буде розмістити в папці публікацій сервера (звичайно це – C: Inetpub wwwroot) і запустити сам сервер. Тепер, якщо ви перейдете за адресою http://localhost/primer.exe в броузері, ви повинні побачити результат дії даної програми – рядок Hello, world! От і все, найпростіше web-додаток на Delphi готове.

Передача параметрів


Насправді нам би навряд чи знадобилося Delphi, для створення подібних програм. Звичайно, можна генерувати сторінки виходячи з різних умов, але питання в тому, як дані умови передати програмі. І тут виявляється не все так складно, достатньо згадати передачу параметрів додатком за допомогою командного рядка і вступити відповідно. Хоча це, зрозуміло, хитрість. Це для програми Delphi ми оперуємо командним рядком, для користувача ж це адресний рядок в броузері, тобто url.

Спробуємо на прикладі. Необхідно створити додаток, що видає різну інформацію (наприклад, час, дату або те й інше разом) залежно від параметрів, зазначених в адресному рядку броузера. Як відомо, за дані в параметрах відповідають такі функції, як ParamCount і ParamStr. Їх-то ми і будемо використовувати.





program CgiDate;
{$APPTYPE CONSOLE}
uses SysUtils;
begin
writeln (“CONTENT-TYPE: TEXT/HTML”);
writeln;
writeln (“<HTML><HEAD>”);
writeln (“<TITLE>Cgidate</TITLE>”);
writeln (“</HEAD><BODY>>”); writeln (“

Приклад передачі параметрів “);
writeln (“<HR>”);
writeln (“<H4>
if ParamCount >0 then
begin
if ParamStr (1) = “date” then writeln (FormatDateTime (“” Сегодня “dddd, mmmm d, yyyy”, Now))
else if ParamStr (1) = “time” then writeln (FormatDateTime (“” Час “hh: mm: ss AM / PM”, Now))
else if ParamStr (1) = “both” then writeln (FormatDateTime (“” Сегодня “dddd, mmmm d, yyyy,” + “”

І час “hh: mm: ss AM / PM”, Now))
else writeln (“Помилка! Невірний параметр:” + ParamStr (1) + “.”)
end
else writeln (“Параметр відсутній.”);
writeln (“</BODY></HTML>”);
end.


Чи не правда просто? Тепер, якщо в адресному рядку броузера ви наберете, наприклад http://localhost/cgidate/exe?time, буде згенеровано сторінка, що відображає поточний час, http://localhost/cgidate/exe?date – Відповідно дата, а при передачі параметра both – поточна дата і час. У разі якщо жоден з параметрів переданий не був або він був помилковий – виникне повідомлення про це.

Дані адреси і параметри можна безпосередньо вказати в коді HTML і генерувати необхідні зміни на сторінці або інші сторінки переходячи по відповідним посиланням.

Слід звернути увагу на те, як передавати дані через url. Знак питання відокремлює параметр від адреси файлу, за допомогою знака рівності web-додатку передається значення даного параметра. Так як в адресному рядку не можна використовувати пробіл, він замінюється на шістнадцятковий код в таблиці ASCII, тобто% 20.

Але насправді, якщо якісь дані передаються від користувача web-додатку, то зазвичай для цього використовують форми, а не url (хоча одне іншому не заважає). Спробуємо і ми створити програму, яка б отримувало дані від користувача, занесені їм у форму.

Для початку, звичайно, потрібно створити сам код HTML в якому б була присутня форма з полями вводу, кнопкою відправки та іншими необхідними атрибутами. При цьому form action повинен містити адресу програми, яка буде отримувати дані. Значення method може бути так само як GET, так і POST. Насправді GET – це і є передача параметрів через url, додаючи їх до адресному рядку, так як POST передає їх додатком за допомогою стандартного потоку введення. Який з них краще і зручніше – вирішувати вам, але найчастіше метод GET використовується саме для генерації сторінок (достатньо поглянути на url який виникає при роботі на пошукових серверах), тоді як другий для – передачі даних, відображати які в адресному рядку було б дуже накладно.

Потім необхідно створити програму, яка б адекватно змогло сприйняти всі ці дані з боку користувача. У разі якщо дані передавалися за допомогою методу GET проблем не буде – можна діяти як у попередньому прикладі. Якщо ж додаток отримує дані від користувача за допомогою POST, все трохи інакше.

Необхідно буде зчитувати дані з змінної оточення, а для цього ми, природно, повинні знати дані змінні.

Гюльчітай, відкрий личко


Немає в світі таємниць. Особливо їх мало у користувача від web-додатки. І якщо ми не знаємо про користувача дещо особисте, все інше броузери з легкістю віддають web-серверу, анітрохи не турбуючись про приватності і бажаннях того самого користувача. Це, звичайно, недобре для користувача, але добре для розробника web-додатки, оскільки для нього знання – велика річ.

Отже, дані від користувача web-додатком можна передати через змінні оточення. Ось список найбільш часто вживаних:

GATEWAY_INTERFACE
Підтримувана версія CGI.

REQUEST_METHOD
Метод запиту, може бути як GET так і POST.

HTTP_REFERER
Адреса сторінки (url), що активує поточний додаток на web-сервері.

PATH_INFO
Шлях переданий додатку розташований між ім’ям програми та рядком запиту.

QUERY_STRING
Рядок запиту, якщо метод – GET, добавляеться до url.

REMOTE_HOST
Ім’я хоста віддаленого користувача.

REMOTE_USER
Ім’я віддаленого користувача.

REMOTE_IDENT
IP-адреса віддаленого користувача.

HTTP_USER_AGENT
Ім’я і версія броузера віддаленого користувача.

За допомогою даних змінних можна отримати вичерпну інформацію про користувача і переданих даних для вірного проектування вашого web-додатки. Звичайно, цього вистачить в тому випадку, якщо ви не збираєтеся подібно Великому Брату стежити за кожним рухом тіла користувача.

Але повернемося до поставленого завдання – передачу даних додатку від користувача через форму. Дані, які передаються через QUERY_STRING в додаток з допомогою методу POST, досить просто витягти для використання.

Нижче лістинг програми, що видає список деяких змінних оточення і їх значення. Дізнайтеся дещо про своє броузері і web-сервері.





program CgiVars;
{$APPTYPE CONSOLE}
uses
Windows; сonst
VarList: array [1..17] of string [30] =
(“SERVER_NAME”, “SERVER_PROTOCOL”,
“SERVER_PORT”, “SERVER_SOFTWARE”,
“GATEWAY_INTERFACE”, “REQUEST_METHOD”,
“PATH_TRANSLATED”, “HTTP_REFERER”,
“SCRIPT_NAME”, “PATH_INFO”,
“QUERY_STRING”, “HTTP_ACCEPT”,
“REMOTE_HOST”, “REMOTE_USER”,
“REMOTE_ADDR”, “REMOTE_IDENT”,
“HTTP_USER_AGENT”);
var
I: Integer;
ReqVar: string;
VarValue: array [0..200] of Char;
begin
writeln(“Content type: text/html”);
writeln;
writeln(“<HTML><HEAD>”);
writeln(“<TITLE>CGI Variables</TITLE>”);
writeln(“</HEAD><BODY>”);
writeln(“<H1>CGI Variables</H1>”);
writeln(“<HR><PRE>”);
for I := Low (VarList) to High (VarList) do
begin
ReqVar := VarList[I];
if (GetEnvironmentVariable (PChar(ReqVar),
VarValue, 200) > 0) then
else
VarValue := “”;
writeln (VarList[I] + ” = ” + VarValue);
end;
writeln(“</PRE></BODY></HTML>”);
end.

За кадром


У цій статті ми не торкнулися інший і вже напевно більш великою і складною теми, як створення ISAPI-додатків на Delphi. Вищенаведені способи створення додатків придатні лише в тому випадку, якщо вам необхідно швидке, компактне і не дуже складне web-додаток. Якщо ж вам необхідний, наприклад, доступ до баз даних, то подібний шлях неприйнятний.

Для створення повномасштабних програм для інтернету в Delphi існує спеціальний помічник – Web Server Application. З його допомогою можна створити додаток генеріруещее динамічні web-сторінки, засновані на CGI, NSAPI або ISAPI. Єдине накладається обмеження – безпосередньо web-сервер повинен працювати на базі Windows.

Одним з головних переваг створення подібних програм саме в середовищі Delphi є те, що ви продовжуєте працювати з візуальними компонентами – це значно простіше, ніж створення додатків в інших середовищах – можливість помилки у великих проектах, де використовується візуальне проектування менше, ніж у тих, де все описується виключно кодом. Крім того, засоби створення web-додатків дозволяють імпортувати вже існуючі програми в інтернет-середовище, що, погодьтеся, важливо. Поки, звичайно, Delphi не володіє великим набором компонентів для web-додатків, але, мабуть, вже наступна версія цього середовища обзаведеться необхідними. Але і зараз Delphi можна вважати досить зручним інструментом для створення додатків, взаємодіючих з інтернетом.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*