Delphi | Сети | ПК | Маршрутизаторы | Моделирование | Протоколы | Экспертные системы | Удаленный доступ | Доменные имена
Аплеты | SQL | Надежность | Задачи | Информационные процессы | JAVA | Отказы изделия | Расчет надежности показателей | Инфсис

Основные компоненты в Java

В-третьих, язык Java оказался также удобным для разработки web-приложений на серверной стороне - это так называемые сервлеты и Java Server Pages. Созданы несколько web-серверов на платформе Java. Что же касается первоначальной идеи создания языка Java - разработки программ для бытовой техники - то она в настоящее время выражается, главным образом, в технологии создания "умных домов", а также в разработке игр и прочих приложений для сотовых телефонов и других устройств.

Контейнер Window

Контейнер window — это пустое окно, без внутренних элементов: рамки, строки заголовка, строки меню, полос прокрутки. Это просто прямоугольная область на экране. Окно типа window самостоятельно, не содержится ни в каком контейнере, его не надо заносить в контейнер методом add(). Однако оно не связано с оконным менеджером графической системы. Следовательно, нельзя изменить его размеры, переместить в другое место экрана. Поэтому оно может быть создано только каким-нибудь уже существующим окном, владельцем (owner) или родителем (parent) окна window. Когда окно-владелец убирается с экрана, вместе с ним убирается и порожденное окно. Владелец окна указывается В конструкторе:

Созданное конструктором окно не выводится на экран автоматически. Его следует отобразить методом show (). Убрать окно с экрана можно методом hide (), а проверить, видно ли окно на экране — логическим методом isShowing().

Окно типа window возможно использовать для создания всплывающих окон предупреждения, сообщения, подсказки. Для создания диалоговых окон есть подкласс Dialog, всплывающих меню — класс popupMenu (см. главу 13).

Видимое на экране окно выводится на передний план методом toFronto или, наоборот, помещается на задний план методом toBackf).

Уничтожить окно, освободив занимаемые им ресурсы, можно методом dispose().

Менеджер размещения компонентов в окне по умолчанию — BorderLayout. Окно создает свой экземпляр класса Toolkit, который возможно получить методом getToolkit().

События

Кроме событий класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent , при изменении размеров окна, его перемещении или удалении с экрана, а также показа на экране происходит событие windowEvent.

Апплет как интерфейс к сервлету

Альтернативой передачи данных сервлету с помощью HTML-форм является использование для этих целей апплетов. Этот подход позволяет разрабатывать более сложный пользовательский интерфейс для представления вводимых данных. Также неоспоримым преимуществом такого подхода является использование одной и той же технологии программирования для разработки и серверной части системы (сервлеты), и клиентской части (апплеты). Для такой передачи данных используется объект класса URL.
Известно, что данные HTTP-запроса могут передаваться по сети с помощью двух методов передачи данных - GET и POST. При передаче параметров методом GET данные передаются в адресной строке. В этом случае схема вызова сервлета и передачи данных в него выглядит так:

// пусть имена параметров и их значения хранятся в переменных
// name1, name2 - имена параметров,
// val1, val2 - значения параметров
String someData=name1+"="+val1+"&"+name2+"="+val2;
try
{
//создание URL на сервлет
URL servURL=new URL("servlet/serv1"+"?"+someData);
// загрузка сервлета
getAppletContext().showDocument(servURL);
}
catch(MalformedURLException e)
{
}

Получение данных сервлетом при такой передаче параметров осуществляется так же, как если бы они передавались из HTML-формы.
Интересным является случай, когда апплет не перестает работать после передачи данных сервлету, а принимает от сервлета некоторый ответ и продолжает работу далее. Получается, что сервлет срабатывает "на втором плане", принимая данные от апплета и обрабатывая их. Это можно сделать только с помощью метода POST.
Для передачи данных сервлету методом POST и для получения ответа апплет должен выполнять следующие действия:
1. Создать объект класса URL, содержащий ссылку на домашний хост апплета:

URL currentPage=getCodeBase();
String protocol=currentPage.getProtocol();
String host=currentPage.getHost();
int port=currentPage.getPort();
URL dataURL=new URL(protocol,host,port,"/servlet/myServlet");

2. Создать объект класса URLConnection для получения входных и выходных потоков апплета:

URLConnection conn=dataURL.openConnection();

3. Дать браузеру указание не кэшировать результаты.

conn.setUseCaches(false);

4. Сообщить системе, что апплет будет не только читать, но и посылать данные:

conn.setDoOutput(true);

5. Создать объект класса ByteOutputStream для буферизации данных, которые посылаются сервлету (для дальнейшего определения размера посылаемых данных):

ByteArrayOutputStream byteStream=new ByteArrayOutputStream(100);

6. Присоединить выходной поток к объекту класса ByteOutputStream:

PrintWriter out=new PrintWriter(byteStream,true);

7. Поместить данные в буфер:

String someData=name1+"="+val1+"&"+name2+"="+val2;
out.print(someData);
out.flush();

8. Задать заголовок Content-Length (обязателен при передаче параметров методом POST):

conn.setRequestProperty("Content-Length",
String.valueOf(byteStream.size()));

9. Задать заголовок Content-Type.

conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");

10. Послать данные:

byteStream.writeTo(conn.getOutputStream());

11. Открыть входной поток для получения ответа:

BufferedReader in=new BufferedReader(new
InputStreamReader(conn.getInputStream()));

12. Прочитать результат:

String line;
while((line=in.readLine())!=null)
// какие-то действия с полученным ответом

Сервлет в этом случае должен принимать и обрабатывать данные таким же образом, что и в случае приема символьных данных от HTML-формы.
Приведем пример взаимодействия апплета и сервлета. Апплет отсылает серверу информацию, вводимую в текстовое поле, а сервлет записывает информацию в заданный файл, после чего возвращает строку о том, что операция прошла успешно.

 

Математический анализ, лекции по физике Компьютерные сети