Смекни!
smekni.com

Разработка системы дистанционного обучения кафедры ВТИТ (стр. 8 из 10)

chown –R sk /usr/local/jdk1.6.0/

chmod 774 / usr/local/jdk1.6.0/

chown –R sk /usr/local/apache-tomcat-5.5.20/

chmod 774 /usr/local/apache-tomcat-5.5.20/

Создается скрипт запуска Apache-Tomcat в /etc/rc.d/tomcat, содержимое которого приведено в Приложении Е.

Для запуска Apache-Tomcat в командной строке набирается: /etc/rc.d/tomcat start.

После старта открывается браузер и набирается «http://localhost:8080», тем самым загружая web-интерфейс для управления Apache-Tomcat (рисунок 2.3.1.1).

Рисунок 2.3.1.1 - Web-интерфейс для управления Apache-Tomcat

Все приложения написанные для Apache-Tomcat будут располагаться в каталоге /usr/local/apache-tomcat-5.5.20/webapps/.

Для СДО создается отдельный каталог /usr/local/apache-tomcat-5.5.20/webapps/sdo/.


2.3.2 Сервер БД Oracle Database 10g

Инсталлятор Oracle располагается в директории /shared/Oracle10g/. Установка проводится в директорию /u01/app/. Перед запуском инсталлятора необходимо владельцем этой директории сделать пользователя sk:

chmod –R 777 /shared/Oracle10g/

chown –R sk /u01

chmod –R 775 /u01

Т.к. ОС SuSe Linux Server Edition 10 не поддерживается Oracle, а поддерживается только 9-ая версия, при запуске инсталлятора нужно указать, чтобы игнорировалась версия ОС.

./runInstaller –ignoreSysPrereqs

Сразу же появляется сообщение о том, что недостаточно прав для работы с директорией /opt/oracle/, поэтому меняется владелец данной директории, тем самым получив к ней полный доступ.

chown –R sk.wheel /opt/oracle

В процессе инсталляции необходимо добавить русский язык в список выбранных (рисунок 2.3.2.1).

Затем, указывается директория, в которую будет проинсталлирован Oracle (рисунок 2.3.2.2).

В качестве кодировки БД выбирается Юникод – UTF8. Глобальное имя БД остается по умолчанию – orcl.


Рисунок 2.3.2.1 - Выбор языков для БД

Рисунок 2.3.2.2 - Выбор директории для установки сервера

Далее указывается директория для хранения файлов БД (рисунок 2.3.2.3).


Рисунок 2.3.2.3 - Выбор директории для файлов БД

Затем вводится пароль для всех системных пользователей (рисунок 2.3.2.4).

Рисунок 2.3.2.4 - Задание паролей для системных пользователей

После этого начинается копирование файлов системы. Перед окончанием установки потребуется запустить два скрипта от пользователя root, которые задают параметры для Oracle.

После установки система готова к использованию, но если перегрузить компьютер, то Oracle надо будет запускать заново. Поэтому необходимо сконфигурировать ОС на запуск Oracle.

Открывается /etc/oratab и изменяется последняя строка с N на Y, чтобы инстанция (в данном случае - orcl) запускалась вместе с сервером [7].

Необходимо описать переменные среды в /etc/profile:

### Oracle 10g ###

export ORACLE_HOME="/u01/app/oracle"

export ORACLE_SID=orcl

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

export PATH=$PATH:$ORACLE_HOME/bin

Файл /etc/rc.d/oracle стартует, перезагружает и останавливает сервер. Содержимое данного файла описано в Приложении Ж. Чтобы запустить Oracle в консоли вводится /etc/rc.d./oracle start.

Система должна запуститься. Обратившись по адресу http://localhost:1158/em в браузере загрузится Oracle Enterprise Manager. А если обратиться по адресу http://localhost:5560/isqlplus, то загрузится web-интерфейс для работы с PL/SQL.

2.4 Разработка приложения СДО

Разработка СДО ведется с использованием объектно-ориентированного подхода. Следовательно, приложение представляет собой набор объектов взаимодействующих между собой. Поэтому при разработке приложения необходимо как можно правильнее разделить выполняемые задачи между объектами.

СДО строится по схеме Модель-Вид-Контроллер (MVC, Model-View-Controller). Модель представляет систему, вид отвечает за отображение модели, а контроллер обрабатывает данные, поступающие от пользователя.

В качестве вида выступает страница JSP, отображающие данные для пользователя и позволяющие вводить новые данные. После введения новых данных управление передается контроллеру, который проверяет правильность введенных данных. Роль контроллера выполняет сервлет. После проверки введенных данных, инициализируется модель. В данной системе каждой таблице базы данных, соответствует два класса модели: все свойства первого класса, соответствуют полям таблицы, а второй класс – отвечает за непосредственное взаимодействие с таблицей. Таким образом, проверенные контроллером данные, присваиваются объекту, который соответствует таблице БД. Этот объект сохраняется в таблице объектом, который отвечает за взаимодействие с этой таблицей. После того как модель обновилась, необходимо пользователю отобразить изменения, для этого делается выборка из БД и вид отображает внесенные изменения [8].

Одной из проблем, с которой пришлось столкнуться при разработке приложения - была проблема кодировки представления данных кириллицей из БД. Попытка устранения данной проблемы производилась на сервере БД Oracle, путем многочисленных перестановок с различными кодировками и попытками задать в переменных среды кодировку. Но все это было безуспешно. Однажды, была осуществлена попытка ввода данных через SQL*Plus по средствам web-интерфейса, а не через консоль, как это делалось ранее. После выборки, было обнаружено, что введенные данные нормально выводятся, используя все буквы кириллицы. Т.е. ошибка возникает во время ввода данных и явно, что сервер БД здесь не причем.

В конечном счете, выяснилось, что когда данные забираются из формы, они преобразуются в неизвестную кодировку. Поэтому при получении скриптом данных из формы их следует явно преобразовывать к нужной кодировке. Т.к. в разрабатываемой системе используется кодировка UTF-8, то преобразование кодировки производится следующим методом [9]:

request.setCharacterEncoding(“UTF-8”)

2.4.1 Разработка форм

Вся информация, хранящаяся в БД, должна быть отображена на экране, т.е. для этого необходимо создавать специальные формы ввода, изменения и удаления данных. Т.к. общение со стороны клиента происходит через web-браузер, то наиболее удобным средством для создания и обработке на стороне клиента форм является JavaScript.

В качестве примера ниже приведен код формы ввода факультета:

<form name="form1" method="post" action="FacultyAdd">

<table width="200" border="0">

<tr>

<td>Название факультета:</td>

<td><input type="text" name="facultyName"></td>

</tr>

<tr>

<td>Сокращенное название факультета:</td>

<td><input type="text" name="facultyShortName"></td>

</tr>

<tr>

<td> <div align="center"> <input type="submit" name="Submit" value="Добавить"> </div> </td>

<td><input type="reset" name="Submit3" value="Очитстить"></td>

</tr>

</table>

</form>

В данном примере элементы формы выводятся в ячейки таблицы для ровного представления на странице. Рассмотрим, элементы формы:

<form name="form1" method="post" action="FacultyAdd"> - тэг, описывающий форму, параметр method определяет каким методом будут передаваться данные сервлету: post или get; параметр action определяет, какому сервлету передавать параметры из формы на обработку.

<input type="text" name="facultyName> - однострочный редактор, позволяется осуществить ввод текстовых данных.

<input type="submit" name="Submit" value="Добавить"> - кнопка, отправляющая данные из элементов ввода сервлету, указанному в параметре action формы.

<input type="reset" name="Submit3" value="Очистить"> - кнопка, сбрасывающая все параметры формы.

На рисунках 2.4.1.1 и 2.4.1.2 приведены формы ввода и изменения/удаления данных.

Рисунок 2.4.1.1 - Форма добавления/удаления факультета

Рисунок 2.4.1.2 - Форма изменения/удаления факультетов

Исходный код формы, приведен в Приложении И.


2.4.2 Разработка классов

В разд. 2.4 была описана схема взаимодействия классов в приложении. Ниже рассматривается, непосредственная разработка классов.

Для работы с таблицей факультетов (Faculty), создается специальный класс Faculty. Описание класса осуществляется следующей конструкцией:

public class Faculty

Данный класс содержит свойства, соответствующие всем полям таблицы Faculty, т.е. facultyID, facultyName, facultyShortName. Описание этих свойств, производится следующим образом:

private int facultyID;

private String facultyName;

private String facultyShortName;

По правилам объектно-ориентированного программирования, не следует разрешать прямой доступ к полям класса, т.е. описывать их ключевым словом public. Осуществлять этот доступ следует при помощи специальных методов, которые будут устанавливать, и извлекать значения свойств класса.

Для извлечения значения свойства facultyID, используется следующий метод:

public int getFacultyID() {

return facultyID;

}

Для изменения и задания свойства facultyID, используется метод setFacultyID:

public void setFacultyID(int facultyID) {

this.facultyID = facultyID;

}

Во время создания объекта выполняется особый метод, называемый конструктором. Конструкторы бывают пустыми, т.е. в их задачу входит выделение адресного пространства для создающегося объекта, а бывают конструкторы с параметрами, которые помимо выделения адресного пространства, задают значения свойств объекта. Конструктор с параметрами выглядит следующим образом: