Основы проектирования приложений баз данных

       

Вызов методов компонентов JAVABEANS из JSP-файла


Для того чтобы создать новый JSP-файл, использующий рассмотренный выше бин, выполните следующие действия:

  1. Создайте новый JSP-файл, выполнив команду меню File|New, а затем на вкладке Web выбрав пиктограмму JavaServer Page.
  2. Снимите флажки Generate submit form и Generate sample bean и завершите данный диалог.
  3. В окне редактора после тега <body> введите следующий код:

    <jsp:useBean id="jdbc_bean" scope="application" class="myjspjdbc1.HttpJDBCBean" />

    JSP-действие jsp:useBean создает объект типа HttpJDBCBean с идентификатором jdbc_bean

    Атрибут class определяет класс создаваемого объекта, квалифицированный именем пакета.

  4. Введите после описания действия jsp:useBean следующий код, выполняющий подключение всех файлов из пакета myjspjdbc1: <%@ page import = "myjspjdbc1.*" session="false" %>
  5. Выполните вызов метода processRequest класса HttpJDBCBean: <% jdbc_bean.processRequest(request, response); %>

    В качестве параметров метода указываются предопределенные переменные request и response, используемые для доступа к параметрам запроса и к формированию ответа.

  6. Введите код шаблона, отображающий заголовок JSP-страницы. Например: <p><center><font size=2><b>JSP</b></font></center></p> <p >Доступ к базе данных через JDBC</p><hr></p>

    Атрибут size тега font определяет размер шрифта, а тег hr используется для отображения горизонтальной линии.

  7. Используйте тег FORM для создания формы, в которую будут помещаться результаты SQL-запроса. Например, введите следующий код: <FORM action=Jsp1.jsp method=post>

    </FORM>

    При обработке формы будет использоваться этот же файл Jsp1.jsp.

  8. Сформируйте код, выполняющий определение параметров запроса. Для этого, например, используя тег <TABLE>, разместите в форме таблицу, первый столбец которой будет содержать имя запрашиваемого параметра, а второй столбец - текстовое поле, предназначаемое для ввода значения.

    Для того чтобы создать новый JSP-файл, использующий рассмотренный выше бин, выполните следующие действия:

    1. Создайте новый JSP-файл, выполнив команду меню File|New, а затем на вкладке Web выбрав пиктограмму JavaServer Page.
    2. Снимите флажки Generate submit form и Generate sample bean и завершите данный диалог.
    3. В окне редактора после тега <body> введите следующий код:

      <jsp:useBean id="jdbc_bean" scope="application" class="myjspjdbc1.HttpJDBCBean" />



      JSP-действие jsp:useBean создает объект типа HttpJDBCBean с идентификатором jdbc_bean

      Атрибут class определяет класс создаваемого объекта, квалифицированный именем пакета.

    4. Введите после описания действия jsp:useBean следующий код, выполняющий подключение всех файлов из пакета myjspjdbc1: <%@ page import = "myjspjdbc1.*" session="false" %>
    5. Выполните вызов метода processRequest класса HttpJDBCBean: <% jdbc_bean.processRequest(request, response); %>

      В качестве параметров метода указываются предопределенные переменные request и response, используемые для доступа к параметрам запроса и к формированию ответа.

    6. Введите код шаблона, отображающий заголовок JSP-страницы. Например: <p><center><font size=2><b>JSP</b></font></center></p> <p >Доступ к базе данных через JDBC</p><hr></p>

      Атрибут size тега font определяет размер шрифта, а тег hr используется для отображения горизонтальной линии.

    7. Используйте тег FORM для создания формы, в которую будут помещаться результаты SQL-запроса. Например, введите следующий код: <FORM action=Jsp1.jsp method=post>

      </FORM>

      При обработке формы будет использоваться этот же файл Jsp1.jsp.

    8. Сформируйте код, выполняющий определение параметров запроса. Для этого, например, используя тег <TABLE>, разместите в форме таблицу, первый столбец которой будет содержать имя запрашиваемого параметра, а второй столбец - текстовое поле, предназначаемое для ввода значения.


      Каждое текстовое поле создаваемой таблицы будет соответствовать свойству бина JDBCBean.

      Например:

      <table> <tr> <td> JDBC-драйвер:</td> <td><input type="text" name="classname" value=" <%= jdbc_bean.getClassname() %>" size="40"></td> <td></td> </tr>

      <!- JSP-выражение <%= jdbc_bean.getClassname() %>" формирует начальное значение текстового поля, вызывая метод getClassname для определения значения свойства classname объекта с идентификатором jdbc_bean. ->

      <tr> <td></td> <td><i>sun.jdbc.odbc.JdbcOdbcDriver</i></td> </tr>

      <! - Класс sun.jdbc.odbc.JdbcOdbcDriver реализует JDBC-ODBC драйвер для доступа к источнику данных. Загрузка драйвера выполняется на ПК, на котором запущен Web-сервер.-->

      <tr> <td>JDBC URL-адрес источника данных:</td> <td><input type="text" name="url" value=" <%= jdbc_bean.getUrl() %>" size="40"></td> </tr> <tr> <td></td>> <td><i>jdbc:odbc:MyDB</i></td> </tr> <tr> <td>Имя пользователя:</td> <td><input type="text" name="username" value=" <%= jdbc_bean.getUsername() %>" size="25"></td> </tr> <tr> <td>Пароль:</td> <td><input type="text" name="password" value=" <%= jdbc_bean.getPassword() %>" size="25"></td> </tr> <tr> <td>Выполняемый SQL-оператор:</td> <td><textarea cols=35 rows=3 name="query" wrap="soft"> <%= jdbc_bean.getQuery() %></textarea></td>

      <!-- Тег textarea используется для создания текстовой области. Атрибуты cols и rows определяют размер создаваемой области. -->

      </tr></table>

      Тег input с атрибутом type="text" определяет текстовое поле.


      Атрибут name тега input определяет имя параметра, передаваемого JSP-файлу при обработки формы. Формируемый POST-запрос будет содержать список параметров, указываемых атрибутами name, со значениями, указываемыми атрибутами value.

    9. Добавьте в форму кнопку Submit, при щелчке пользователя по которой на web-сервер будет передан POST-запрос с параметрами, указанными в форме.

      Например:

      <input type="submit" name="submit" value="Выполнить SQL-оператор">


    В результате выполненных действий WEB-сервер получит POST-запрос, который будет обработан указанным в теге FORM JSP-файлом. При этом как результат выполнения SQL-оператора будет создан результирующий набор. Далее JSP-файл, используя методы бина, может получить доступ к сформированной информации.

    Для того чтобы отобразить на формируемой HTML-странице данные результирующего набора, выполните следующие действия:



    1. Определите число столбцов и выведите строку заголовка таблицы, в которой будет отображаться результирующий набор.

      Например:

      <% if (jdbc_bean.getColumnCount() != 0){ %><% -- JSP-скриплет --%> <table cellspacing="0" cellpadding="5" border="0" BGCOLOR=#EDECE5> <% for (int i=0; i<jdbc_bean.getColumnCount(); i++){ String str0 = jdbc_bean.getColumnLabels(i); %>

      <!-- Метод getColumnLabels бина JDBCBean возвращает заголовок столбца с указанным индексом --> <th><%= str0 %></th> <% } %> <% } %>


    2. Запишите JSP-скриплет, формирующий строки результирующего набора в формате HTML.

      Например:

      <% for (int row=1; row<jdbc_bean.getRowCount(); row++) {%> <tr></tr> <% for (int col=0; col<jdbc_bean.getColumnCount(); col++) { String str1 = jdbc_bean.getCell(col, row); %> <td ><%= str1 %></td> <% } %> <% } %> </table>


    Приведенный выше JSP-скриплет использует метод getRowCount бина JDBCBean для выполнения цикла по количеству строк, а метод getColumnCount - для выполнения цикла по количеству столбцов.


    Метод getCell бина JDBCBean возвращает массив строк, содержащий значения всех полей одной записи результирующего набора.

    Перед выполнением JSP-файла следует откомпилировать классы используемых бинов.

    В JBuilder для компиляции данных классов в проект следует добавить библиотеку Servlet. Для этого предварительно скопируйте файл библиотеки Servlet.library в каталог проекта. Для подключения библиотеки выполните команду меню Project|Project Properties и на вкладке Paths выберите страницу Required Libraries. Далее для добавления новой библиотеки щелкните мышью на кнопке Add и в секции Project выберите библиотеку Servlet.

    Добавленная библиотека будет отображена в списке библиотек на вкладке Required Libraries.

    Для выполнения JSP-файла на Web-сервере Tomcat выделите в окне проекта имя JSP-файла и выполните для него команду контекстного меню Web Run.

    После введения значений в отображаемый на вкладке Web View окна содержания результат выполнения JSP-файла, web-сервер формирует HTML-страницу (рис. 14.3), содержащую результат выполнения JSP-скриптов.


    Рис. 14.3.  Результат выполнения web-сервером JSP-файла

    Далее приводится код используемых классов (JDBCBean и HttpJDBCBean):

    // Код файла JDBCBean.java: package myjspjdbc1; import java.io.*; import java.util.*; import java.sql.*; public class JDBCBean { String classname ; // JDBC-драйвер String url ; String username ; String password ; String query ; // SQL-оператор. int rows, cols; // Число строк и столбцов результирующего набора Vector result; public void setClassname(String classname) { this.classname = classname; } public String getClassname() { return classname; } public void setUrl(String url) { this.url = url; } public String getUrl(){ return url; } public void setUsername(String username) { this.username = username; } public String getUsername() { return username; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setQuery(String query) { this.query = query; } public String getQuery() { return query; }


    Содержание раздела