Реализация запроса SQL и обработка результатов. (Объекты Statement и ResultSet)

Пакет JDBC позволяет подключиться к реляционной базе данных и взаимодействовать с ней используя язык SQL. Язык SQL – это язык структурированных запросов для управления базами данных.

Перечислим основные команды SQL:

Создание базы данных: create database student

Создание таблиц: create table books (id char(10 not null, title char(10)).

Вставка, удаление и обновление строк:

insert into books values(“1”,”Java 2”);

delete from books where id=”2”;

update books set title=”Java 1” where id=”1”;

Создание запроса:

select * from books;

select title from books where id=”1”.

Объект Statement предназначен для хранения SQL-команд и создается методом createStatement() из объекта Connection. Объект Statement лучше всего подходит для SQL-операторов, выполняемых один раз. При пересылке объекта Statement базе данных с помощью установленного подключения СУБД запустит SQL-команду и возвратит результат ее выполнения в виде объекта ResultSet:

statement = connection.createStatetment();

ResultSet res=statement.executeQuery(

“select * from books”);

Если известно, что SQL-команда возвратит целое число, то можно использовать метод executeUpdate():

int kolSt = statement.executeUpdate(

“update books set title=”Java 2” where id=”1”);

Объект ResultSet функционирует как курсор. Для перехода к следующей строке необходимо вызвать метод next(). Разработаны все методы getТип() для всех основных типов данных которые совместимы с SQL.

while (res.next())

{ String s = rs.getString(1); }

После работы с экземпляром класса ResultSet необходимо вызвать его метод close(). Это также касается и классов Connection и Statement.

 

37. Сервлеты, структура и организация, методы жизненного цикла.

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

Жизненный цикл сервлета состоит из следующих шагов:

1 В случае отсутствия сервлета в контейнере.

1.1 Класс сервлета загружается контейнером.

1.2 Контейнер создает экземпляр класса сервлета.

1.3 Контейнер вызывает метод init(). Этот метод инициализирует сервлет и вызывается в первую очередь, до того, как сервлет сможет обслуживать запросы. За весь жизненный цикл метод init() вызывается только однажды.

2 Обслуживание клиентского запроса. Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих методов. Если поступил запрос, метод для которого не реализован, вызывается метод родительского класса и обычно завершается возвращением ошибки инициатору запроса.

3. В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.

Методы: Метод init(). При первой загрузке сервлета вызывается метод init(). Это дает возможность сервлету выполнить любую работу по установке, например, открытие файлов или установку соединений с их серверами. Если сервлет установлен на сервере постоянно, он загружается при запуске сервера. В противном случае сервер активизирует сервлет при получении первого запроса от клиента на выполнение услуги, обеспечиваемой этим сервлетом. Метод init() принимает один аргумент – ссылку на объект ServletConfig, который содержит аргументы для инициализации сервлета. Этот объект имеет метод getServletContext(), возвращающий объект ServletContext, который содержит информацию об окружении сервлета.

Метод service(). Является сердцем сервлета. Каждый запрос от клиента приводит к одному вызову метода service(). Этот метод читает запрос и формирует ответное сообщение при помощи своих двух аргументов ServletRequest и ServletResponse - Объект ServletRequest содержит данные от клиента, а Объект ServletResponse содержит ответ сервлета клиенту.

Метод destroy(). Вызывается для освобождения всех ресурсов (например, открытые файлы и соединения с базой данных) перед выгрузкой сервлета. Этот метод может быть пустым, если нет необходимости выполнения каких-либо завершающих операций. Перед вызовом метода destroy() сервер ждет либо завершения всех обслуживающих операций, либо истечения определенного времени. Это означает, что метод destroy() может быть вызван во время выполнения какого-либо продолжительного метода service().

Метод getServletConfig() возвращает ссылку на объект, который реализует интерфейс ServletConfig. Данный объект предоставляет доступ к информации о конфигурации сервлета, т.е. доступ к параметрам инициализации сервлета и объекту контекста сервлета ServletContext, который дает доступ к сервлету и его окружению.

Метод getServletInfo() определяется программистом, создающим сервлет, для возврата строки, содержащую информацию о сервлете, например: автор и версия сервлета.