МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Опис вихідних текстів аплета FormПри ініціалізації метод init створює всі необхідні органи керування й додає їх у вікно аплета. Коли користувач заповнює форму й натискає кнопку Send, оброблювач відповідної події викликає метод startTransaction, що запускає процес обміну даними з розширенням сервера Web: if(evt.target.equals(btnGetText)){ startTransaction();}Метод startTransaction, певний у нашім додатку, створює й запускає на виконання потік, що і буде взаємодіяти із програмою CGI: void startTransaction(){ m_store = new Thread(this); m_store.start();}При цьому як окремий потік, що працює одночасно з кодом аплета, виступає метод run. Саме в ньому зосереджена вся логіка обміну даними із сервером Web. Тому що в процесі взаємодії можуть виникати різні виключення, ми передбачили їхню обробку за допомогою блоку try-catch: URL u;URLConnection c;PrintStream ps;DataInputStream is; try{ . . .}catch (Exception ioe){ showStatus(ioe.toString()); stop();}Назва виниклого виключення буде відображено в рядку стану браузера. Тепер про те, що робить метод run після одержання керування. Першою справою він витягає з однорядкових текстових полів ім'я й електронна адреса, поєднуючи їх і записуючи отриманий текстовий рядок у поле szSourceStr: String szSourceStr = txtName.getText() + ", " + txtEMail.getText();У рядку szURL перебуває адреса URL програми CGI: String szURL = "http://frolov/scripts/store.exe";У реальному додатку ця адреса необхідно передавати аплету через параметр. Ми використовували безпосереднє кодування тільки для спрощення вихідного тексту. На наступному етапі метод run створює для програми CGI об'єкт класу URL і відкриває з ним з'єднання: u = new URL(szURL);c = u.openConnection();Користуючись цим з'єднанням, метод run створює форматований потік виводу, записує в нього рядок ім'я й електронної адреси, а потім закриває потік: ps = new PrintStream(c.getOutputStream());ps.println(szSourceStr);ps.close();Передані в такий спосіб дані потраплять у стандартний потік вводу програми CGI, звідки вона їх і прочитає. Зробивши це, програма CGI запише в стандартний вихідний потік рядок відповіді, яку необхідно прочитати в методі run нашого аплета. Для цього ми відкриваємо вхідний потік, створюємо на його основі форматований вхідний потік даних, читаємо один рядок тексту й закриваємо вхідний потік: is = new DataInputStream(c.getInputStream());String szReceived;szReceived = is.readLine();is.close();Відразу після цього програма CGI завершить свою роботу й буде готова до обробки нових запитів на додавання записів. Що ж стосується методу run, те він додасть отриману від розширення сервера текстовий рядок у багатострокове вікно редагування, як це показано нижче, а потім ініціює перемальовування вікна аплета: txta.appendText(szReceived + "\r\n");repaint();Помітимо, що використаний нами спосіб передачі даних підходить тільки для латинських символів. Якщо вам потрібно передавати символи кирилиці, варто перетворювати їх з кодування UNICODE, наприклад, у гексадецимальне кодування, а в програмі CGI виконувати зворотне перетворення. Аналогічну методику можна застосовувати й для передачі довільних двійкових даних.
|
||||||||
|