Создание серверных приложений
Публикация данных на JSP-страницах
Применение бинов JDBCBEAN и HTTPJDBCBEAN для реализации доступа к базе данных
В состав JBuilder Enterprise входит сервер IAS (версия сервера зависит от версии среды JBuilder), по умолчанию инсталлируемый в каталог \Inprise\AppServer.
Данный WEB-сервер содержит в каталоге Inprise\AppServer\examples\beans\inpriseexamples\beans файлы JDBCBean.java и HttpJDBCBean.java, которые можно использовать для упрощения процесса публикации данных на JSP-страницах. Файл JDBCBean.java представляет собой бин, содержащий свойства, определяющие подключение к базе данных, и выполняемый SQL-оператор. Файл HttpJDBCBean.java применяется для определения параметров, используемых бином JDBCBean.
Для того, чтобы выполнить публикацию данных на JSP-странице с использованием существующих файлов с классами бинов, следует:
- Открыть в среде JBuilder файл JDBCBean.java.
- Добавить в проект новый компонент JavaBean, выполнив команду меню File|New, а затем на вкладке New указав пиктограмму JavaBean.
- В поле ClassName ввести имя создаваемого бина (например, JDBCBean).
- В качестве наследуемого класса указать java.lang.Object.
- Скопировать в созданный файл вместо собственного кода код из ранее открытого файла JDBCBean.java, а затем закрыть скопированный файл.
- Отредактировать первую строку, содержащую директиву package, указав имя текущего пакета проекта.
-
Перейти на вкладку Bean окна содержания и в редакторе бинов перейти на вкладку Properties.
Эта вкладка содержит следующие свойства бина, позволяющие выполнить SQL-запрос:
classname - имя используемого JDBC-драйвера;
url - расположение источника данных;
username - имя пользователя, подключаемого к базе данных;
password - пароль пользователя;
query - выполняемый SQL-оператор.
Для каждого из перечисленных свойств существует get-метод и set-метод.
Свойства cols и rows (число столбцов и строк в результирующем наборе) используются как простые переменные только внутри бина. Для доступа к их значениям служат свойства columnCount и rowCount, имеющие get-методы.
Свойство result используется для формирования отображаемого результата.
-
Создать второй компонент JavaBean и аналогичным образом скопировать в него файл HttpJDBCBean.java.
Класс HttpJDBCBean наследует классу JDBCBean.
Бин HttpJDBCBean использует свой метод processRequest для обработки запроса. Этот метод должен быть непосредственно вызван из JSP-файла для определения значений всех свойств бина JDBCBean.
- Создать JSP-файл, использующий бины JDBCBean и HttpJDBCBean.
В файле JDBCBean.java выполнение SQL-запроса осуществляется методом go на основе значений, установленных для свойств данного бина. Так, этот метод реализует следующие основные действия:
- Выполняет загрузку класса драйвера:
Class.forName(classname);
- Устанавливает соединение с источником данных, указываемым свойством url:
Connection con=DriverManager.getConnection(url,username,password);
- Создает объект типа Statement:
Statement stmt = con.createStatement();
- Выполняет SQL-запрос, определяемый свойством query:
ResultSet rs = stmt.executeQuery(query);
- Записывает в свойства cols, rows и result метаданные текущего запроса:
ResultSetMetaData rsmd = rs.getMetaData(); cols = rsmd.getColumnCount(); rows = 0;
В файле HttpJDBCBean.java. метод processRequest выполняет присвоение значений всем свойствам бина JDBCBean, получая эти значения из параметров запроса.
Метод processRequest определяет значения параметров запроса через объект request типа HttpServletRequest:
if ((_p = request.getParameter("classname")) != null) { classname = _p; }
Так, если параметр classname определен, то значение одноименного свойства устанавливается равным его значению.
Если все необходимые параметры заданы, то вызывается метод go бина JDBCBean: this.go();
JSP-директивы
JSP-директивы используются для указания процессору JSP, каким образом следует выполнять преобразование JSP-файла в сервлет, какие файлы следует включить в состав JSP-документа, где находится библиотека дескрипторов.
JSP-директива указывается между символами <%@ и %>.
JSP-директива page позволяет указать, какие файлы следует подключать, и определить некоторую информацию об JSP-файле.
Директива page имеет ряд атрибутов, включая следующие:
- contentType - определяет используемый набор символов и MIME-тип ответа ( contentType="text/html; charset=windows-1251" );
- import - определяет список импортируемых классов и пакетов. Директива page с атрибутом import может быть вставлена в JSP-файл несколько раз;
- session - значение true данного атрибута указывает, что при выполнении JSP-файла осуществляется поддержка сеанса;
- info - данные о JSP-файле, которые доступны посредством вызова Servlet.getServletInfo().
Так, автоматически формируемая при создании JSP-файла строка
<%@ page contentType="text/html; charset=windows-1251" %>
использует JSP-директиву page для определения типа возвращаемого документа и типа кодировки.