ядки підключають модулі для роботи CGI і CGI :: Ajax. Модуль CGI бере на себе всю роботу по інціціалізаціі веб-оточення і переданих веб-серверу параметрів, дозволяючи також видавати і редагувати службові та http-заголовки, куки і параметри POST і GET запитів. Модуль CGI :: Ajax ще й додає при цьому можливість роботи з AJAX
$ cgi=new CGI; $ pjx=new CGI :: Ajax ( exported_func = gt; amp; perl_func); $ pjx- gt; build_html ($ cgi, amp; Show_HTML );
Тут в перших 2-х рядках ми створюємо екземлярів змінних класів CGI і CGI :: Ajax. У момент створення відбувається їх ініціалізації та завдання деяких початкових параметрів. Для CGI :: Ajax ми бачимо, що створюється прив'язка JavaScript функції exported_func до функції Perl'а perl_func. І нарешті, в третьому рядку відбувається виклик методу класу CGI :: Ajax з ім'ям build_html, який призначений для виведення HTML вмісту веб-сторінки. Як параметри передаються змінна класу CGI і посилання на ім'я функції, яка власне і отрісовиваєт веб-сторінку.
perl_func {$ input=shift;
# do something with $ input $ output=$ input. was the input! raquo ;; ($ output);
}
Це та сама функція мовою Perl, яка буде викликана при введенні якого-небудь значення в поле введення. Ця функція буде викликана як окремий CGI-скрипт. Тобто дана функція абсолютно независмо скрипт всередині основного скрипта. Сама ж функція приймає аргумент і додає до нього рядок was the input! Raquo ;, після чого повертає отриману в результаті рядок
Show_HTML {$ html= lt; lt; EOHTML;
lt; HTML gt;
lt; BODY gt; something:
lt; input type= text name= val1 id= val1 = exported_func ([ val1 ], [ resultdiv ]); gt;
lt; br gt;
lt; div id= resultdiv gt; lt;/div gt;
lt;/BODY gt;
lt;/HTML gt; $ html;
}
Це функція, яка отрісовиваєт вміст веб-сторінки. Функція виводить всього два видимих ??елемента: поле вводу з ім'ям val1 і що більш важливо з таким же id, а також область (div), з id= resultdiv raquo ;, в якій і будуть відображатися результати введення і роботи функції perl_func.
= exported_func ([ val1 ], [ resultdiv ]); gt;
У цьому рядку, для поля введення val1 призначається обробник події, що виникає при відпуску натиснутої клавіші на клавіатурі - onkeyup. Таке призначення є роботою мови JavaScript, підтримка якого вбудована в усі сучасні браузери, адже сам HTML - це тільки мова розмітки тексту, не більше. Далі, функції передаються два аргументи у квадратних дужках і одинарних лапках. Перший аргумент - це id того елемента, подія якого буде обробляти функція, а другий - id елемента, в який буде поміщений отриманий в результаті роботи результат. Наприклад ми вводимо в поле вводу з клавіатури цифру 1. Коли ми відпускаємо кнопку з цифрою 1, трапляється подія onkeyup, яке підхоплюється JavaScript, який далі передає управління функції exported_func. Ця функція, код якої автоматично генерується CGI :: Ajax, у свою чергу виконує AJAX запит, в результаті якого виконується функція perl_func і повернутий їй результат, функція exported_func розміщує в div з id resultdiv. :: Ajax має свою думку про виведених заголовках, касаемо кодування. Якщо ви видали такі заголовки раніше, то не забудьте відключити їх у CGI :: Ajax, додавши після рядка:
$ pjx=new CGI :: Ajax ( exported_func = gt; amp; perl_func);
рядок
$ pjx- gt; skip_header (1);
Якщо необхідно обробляти введення в декількох елементах введення, ви можете видозмінити функцію exported_func, додавши аргументи:
= exported_func ([ val1 , val2 ], [ resultdiv1 , resultdiv2 ]);
А якщо необхідні різні функції-обробники, додаємо їх при створенні екземпляра класу CGI :: Ajax:
$ pjx=new CGI :: Ajax ( exported_func = gt; amp; perl_func,
exported_func2 = gt; amp; perl_func2);
1.4 Графіка в Java
Графіку в Java обслуговують класи Graphics і Graphics2D. Робота з графікою здійснюється в графічному контексті елементів, успадкованих від класу Component. Розуміти це можна так: на елементах управління, наприклад, JFrame, JPanel, JButton та інших, є можливість малювати. Такі елементи мають графічним контекстом, в цьому контескте ми і малюємо. Все, що намалюємо в контексті буде показано на елементі. Класи Graphics і Graphics2D потрібні для роботи з графічним контекст...