Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3147 / 371 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 14:

Создание серверных приложений

< Лекция 13 || Лекция 14: 1234567

Публикация данных на 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-странице с использованием существующих файлов с классами бинов, следует:

  1. Открыть в среде JBuilder файл JDBCBean.java.
  2. Добавить в проект новый компонент JavaBean, выполнив команду меню File|New, а затем на вкладке New указав пиктограмму JavaBean.
  3. В поле ClassName ввести имя создаваемого бина (например, JDBCBean).
  4. В качестве наследуемого класса указать java.lang.Object.
  5. Скопировать в созданный файл вместо собственного кода код из ранее открытого файла JDBCBean.java, а затем закрыть скопированный файл.
  6. Отредактировать первую строку, содержащую директиву package, указав имя текущего пакета проекта.
  7. Перейти на вкладку Bean окна содержания и в редакторе бинов перейти на вкладку Properties.

    Эта вкладка содержит следующие свойства бина, позволяющие выполнить SQL-запрос:

    classname - имя используемого JDBC-драйвера;

    url - расположение источника данных;

    username - имя пользователя, подключаемого к базе данных;

    password - пароль пользователя;

    query - выполняемый SQL-оператор.

    Для каждого из перечисленных свойств существует get-метод и set-метод.

    Свойства cols и rows (число столбцов и строк в результирующем наборе) используются как простые переменные только внутри бина. Для доступа к их значениям служат свойства columnCount и rowCount, имеющие get-методы.

    Свойство result используется для формирования отображаемого результата.

  8. Создать второй компонент JavaBean и аналогичным образом скопировать в него файл HttpJDBCBean.java.

    Класс HttpJDBCBean наследует классу JDBCBean.

    Бин HttpJDBCBean использует свой метод processRequest для обработки запроса. Этот метод должен быть непосредственно вызван из JSP-файла для определения значений всех свойств бина JDBCBean.

  9. Создать JSP-файл, использующий бины JDBCBean и HttpJDBCBean.

В файле JDBCBean.java выполнение SQL-запроса осуществляется методом go на основе значений, установленных для свойств данного бина. Так, этот метод реализует следующие основные действия:

  1. Выполняет загрузку класса драйвера:
    Class.forName(classname);
  2. Устанавливает соединение с источником данных, указываемым свойством url:
    Connection 
    con=DriverManager.getConnection(url,username,password);
  3. Создает объект типа Statement:
    Statement stmt = con.createStatement();
  4. Выполняет SQL-запрос, определяемый свойством query:
    ResultSet rs = stmt.executeQuery(query);
  5. Записывает в свойства 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 для определения типа возвращаемого документа и типа кодировки.

< Лекция 13 || Лекция 14: 1234567