Связавшись с базой данных, можно посылать запросы. Запрос хранится в объекте, реализующем интерфейс Statement. Этот объект создается методом createStatement (), описанным в интерфейсе Сonnection, например:
Statement st = con.createStatement();
Затем запрос (query) заносится в этот объект методом execute () и потом выполняется методом getResultSet(). В простых случаях это можно сделать одним методом executeQuery (), например:
ResultSet rs = st.executeQuery("SELECT name, code FROM tbl1");
Здесь из таблицы tbl1 извлекается содержимое двух столбцов name и code и заносится в объект rs класса, реализующего интерфейс ResultSet.
SQL-операторы INSERT, UPDATE, DELETE, CREATE TABLE и другие в простых случаях ВЫПОЛНЯЮТСЯ методом executeUpdate ().
Остается методом next () перебрать элементы объекта rs — строки полученных столбцов — и извлечь данные многочисленными методами getxxx () интерфейса ResultSet, например:
while (rs.next()){
emp[i] = rs.getString("name") ;
num[i] = rs.getlnt("code");
i++; }
Методы интерфейса ResultsetMetaData позволяют узнать количество полученных столбцов, их имена и типы, название таблицы, имя ее владельца и прочие сведения о представленных в объекте rs сведениях [3].
Таким образом, JDBC позволяет проделать весь цикл работы с базой данных.
Первоначально перед HTTP-серверами стояла простая задача: найти и отправить клиенту файл, указанный в полученном от клиента запросе. Запрос составлялся тоже очень просто по правилам протокола HTTP в специально придуманной URL.
Затем возникла необходимость выполнять на сервере процедуры. В запрос вставили вызов процедур, а на сервере реализовали технологию CGI (Сои Gateway Interface). Процедуру CGI можно написать на любом языке, лишь бы он воспринимал стандартный ввод и стандартный вывод. Неожиданную популярность получил язык Perl. Оказалось, что на нем удобно писать CGI-программы. Возникли специальные языки: PHP, ASP, серверный вариант JavaScript.
Технология Java не могла пройти мимо такой насущной потребности и отозвалась на нее созданием сервлетов и языком JSP (JavaServer Pages).
Сервлеты (servlets) выполняются под управлением Web-сервера подобно тому, как апплеты выполняются под управлением браузера, откуда и произошло их название. Для слежения за работой сервлетов и управления ими создается специальный программный модуль, называемый контейнером сервлетов (servlet container), "контейнер" в русском языке означает пассивную емкость стандартных размеров, но контейнер сервлетов активен, он загружает сервлеты, инициализирует их, передает запросы клиентов, принимает ответы. Сервлеты не могут работать без контейнера, как апплеты не могут работать без браузера. Жаргонное выражение "сервлетный движок", происходящее от английского "servlet engine", лучше выражает суть дела, чем выражение "контейнер сервлетов".
Web-сервер, снабженный контейнером сервлетов и другими контейнерами, стал называться сервером приложений (application server, AS).
Чтобы сервлет мог работать, он должен быть зарегистрирован в контейнере, по терминологии спецификации "Java Servlet Specification" установлен (deploy) в него. Установка (deployment) сервлета в контейнер включает получение уникального имени и определение начальных параметров сервлета, запись их в конфигурационные файлы создание каталогов для хранения всех файлов сервлета и другие операции. Процесс установки сильно зависит от контейнера. Одному контейнеру достаточно скопировать сервлет в определенный каталог, например, autodeploy/ или webapps/, и перезапустить контейнер, для другого надо воспользоваться утилитой установки, В стандартном контейнере J2EE SDK такая утилита называется deploytool.
Один контейнер может управлять работой нескольких установленных в него сервлетов. При этом один контейнер способен в одно и то же время работать в нескольких виртуальных машинах Java, образуя распределенное Web-приложение. Сами же виртуальные машины Java могут работать на одном компьютере или на разных компьютерах [3].
Контейнеры сервлетов создаются как часть Web-сервера или как встраиваемый в него модуль. Большую популярность получили встраиваемые контейнеры Tomcat, разработанный сообществом Apache Software Foundition в рамках проекта Jakarta, Resin фирмы Caucho, JRun фирмы Macromedia. Точное распределение обязанностей между Web-сервером и контейнером сервлетов выпадает на долю их производителей.
JavaServer Pages представляет собой расширение технологии сервлетов для упрощения доставки динамического Web-содержимого. Страницы JavaServer Pages дают возможность программистам Web-приложения создавать динамическое содержимое за счет многократного использования ранее определенных компонентов и за счет взаимодействия с компонентами путем написания сценариев, выполняющихся на стороне сервера. Программисты JavaServer Pages могут многократно использовать компоненты JavaBeans и создавать собственные библиотеки нестандартных тегов, которые инкапсулируют сложные динамические функциональные средства. Библиотеки нестандартных тегов также дают возможность дизайнерам Web-страниц, не знакомым с языком Java, усовершенствовать Web-страницы, добавляя средства динамического отображения содержимое и новые возможности по обработке.
В JSP имеются четыре ключевых компонента: директивы, действия, скриптлеты и библиотеки тегов. Директивы представляют собой сообщения для контейнера JSP, которые дают возможность программисту задавать параметры страницы, включать содержимое из других ресурсов и задавать собственные библиотеки нестандартных тегов для использования их в JSP странице. Действия инкапсулируют функциональные возможности в предопределенных тегах, которые программисты могут встраивать в JSP -страницу. Действия часто выполняются на основе информации, посылаемой на сервер в составе запроса от определенного клиента. Действия также могут создавать объекты Java для использования их в скриптлетах JSP. Скриптлеты (scriptlets), или элементы сценария, дают возможность программистам вставлять код Java, который взаимодействует с компонентами JSP-страницы (и, возможно, с другими компонентами Web-приложения) для обработки запроса. Библиотеки тегов являются составной частью механизма расширения тегов, который дает возможность программистам создавать собственные теги. Такие теги позволяют программистам манипулировать содержимым JSP.
Во многом страницы JavaServer Pages выглядят как стандартные XHTML- или XML-документы. В действительности JSP-странпцы обычно содержат разметку XHTML или XML. Такая разметка носит название данных с неизменной, структурой (fixed template data) или текста с неизменной структурой. Наличие данных с неизменной структурой часто помогают программисту принять решение, какую технологию следует использовать: сервлеты или JSP. Программисты предпочитают использовать JSP, если большая часть посылаемого клиенту содержимого представляет собой данные с неизменной структурой, а лишь небольшая часть содержимого генерируется динамически с помощью кода Java. Программисты используют сервлеты, если только небольшая часть содержимого, посылаемого клиенту, представляет собой данные с неизменной структурой. На самом деле некоторые сервлеты не генерируют какого-либо содержимого. Вместо этого они выполняют определенную задачу в интересах клиента, а затем вызывают другие сервлеты или JSP-страницы, чтобы выдать ответ. Заметим, что в большинстве случаев сервлеты и JSP являются взаимозаменяемыми. Подобно сервлетам, JSP-страницы обычно выполняются на Web-сервере.
Когда сервер, способный поддерживать технологию JSP, принимает первый запрос на JSP-страницу, контейнер JSP транслирует эту JSP-страницу в сервлет Java, который обслуживает текущий запрос и все последующие запросы к этой JSP-странице. Если при компиляции нового сервлета возникают ошибки, эти ошибки приводят к ошибкам на этапе трансляции. Контейнер JSP на этане трансляции помещает операторы Java, которые реализуют ответ JSP-страницы, в метод _jspService. Если сервлет компилируется без ошибок, контейнер JSP вызывает метод _jspService для обработки запроса. JSP-страница может обработать запрос непосредственно или же вызвать другие компоненты Web-приложения, чтобы содействовать обработке запроса. Любые ошибки, которые имеют место в процессе обработки запроса, называются ошибки на этапе запроса.
В целом механизм запрос/ответ и жизненный цикл для JSP-страниц и для сервлетов одинаков. JSP-страницы могут определять методы jspJnit к jepDestroy (схожие с методами init и destroy для сервлетов), которые вызываются, когда JSP-страница, соответственно, инициализируется и завершает свое действие. Программисты JSP-страниц могут определять эти методы с помощью объявлений JSP — составной части механизма создания сценариев JSP [4].
1.4 Операционная система SUSE Linux Enterprise 10
SUSE Linux Enterprise 10 — это первая платформа для открытого предприятия. Только SUSE Linux Enterprise 10 обеспечивает встроенную защиту приложений, виртуализацию и интегрированные средства системного управления во всем спектре аппаратных архитектур. SUSE Linux Enterprise 10 сертифицирована ведущими производителями оборудования и программного обеспечения и сопровождается службой технической поддержки Novell и глобальной системой ее партнеров. Используя SUSE Linux Enterprise 10 и услуги Novell, организация сможет контролировать IT-расходы и в то же время решать проблемы усиливающейся конкуренции и растущих угроз для безопасности [5].
SUSE Linux Enterprise 10 содержит Novell AppArmor, революционную службу безопасности на уровне приложений, которая обеспечит непробиваемую защиту для операционной системы и любых исполняемых в ней процессов. Благодаря AppArmor возможно быстро внедрить мощные средства защиты серверных и настольных приложений, уменьшив нагрузку на IT-отдел и снизив общую стоимость владения. AppArmor помогает быстро разработать и соблюдать правила безопасности, защищающие вашу инфраструктуру от злоумышленников, которые выискивают и используют ошибки в программах. При помощи правил AppArmor можно, например, определить, какие системные ресурсы будут доступны приложению, или установить особые правила работы приложения. AppArmor предоставляет инструменты, позволяющие защитить критически важную инфраструктуру без гигантских затрат времени, ресурсов или обучения.