Содержание Введение .............................................................................................................. 3 Глава 1. Выбор программных средств для реализации Интернеткомплекса «Знание» ........................................................................................... 5 1.1. Выбор СУБД (MySQL). ..................................................................................................... 5 1.2. Язык программирования Java............................................................................................ 8 1.3. Технология Struts ................................................................................................................ 9 Глава 2. Анализ предметной области и создание концептуальной модели ................................................................................................................ 13 2.1. Сбор информации о предметной области ...................................................................... 13 2.2. Выделение сущностей ...................................................................................................... 14 2.3. Определение отношений между сущностями ............................................................... 15 2.4. Создание концептуальной модели .................................................................................. 16 Глава 3. Программная реализация Интернет-комплекса ...................... 18 3.1. Логическая структура программы .................................................................................. 18 3.2. База данных ....................................................................................................................... 18 3.3. Классы работающие с базой данных .............................................................................. 19 3.4. Классы-сущности ............................................................................................................. 20 3.5. Action-классы .................................................................................................................... 22 3.6. Пользовательский интерфейс .......................................................................................... 23 Заключение........................................................................................................ 23 Список использованных источников ......................................................... 25 Приложение А Внешний вид программы .................................................... 26 3 Введение Целью данной работы является создание Интернет-комплекса для анализа и хранения информации, который будет использоваться в работе Гродненской областной организации общественного объединения «Белорусское общество «Знание». Необходимо дать краткую характеристику обществу, а также – его основным направлениям работы. В июле 1947 г. по инициативе группы выдающихся ученых было создано Всесоюзное общество по распространению политических и научных знаний (в 1963 году переименовано во Всесоюзное общество «Знание»). В Республике Беларусь в настоящее время правопреемником Всесоюзного общества является государственно-общественное объединение «Белорусское общество «Знание». Оно объединяет в своих рядах более 300 учёных, экономистов, юристов, медиков, работников культуры, служащих госаппарата, других специалистов в различных отраслях знаний. Существуют его региональные отделения, в частности Гродненская областная организация. Деятельность общества в основном заключается в лекционно-просветительской работе. Приоритетные направления: информационные технологии, внешняя и внутренняя политика РБ, проблемы экологии и природопользования, охрана здоровья и здоровый образ жизни, современные проблемы молодёжи. Любая организация, предприятие, объединение может обратиться в Гродненскую областную организацию и заказать проведение у себя лекционных занятий. Сегодня уже очевидно, что деятельность любой организации будет более успешной, если она имеет свой ресурс в Интернете. Этот ресурс может быть статическим сайтом, но гораздо больше пользы от ресурса, который обладает динамичностью, интерактивностью. Таким образом, возникла идея создания Интернет-комплекса для анализа и хранения информации, который будет позволять потенциальным заказчикам знакомиться проводимыми с деятельностью, мероприятиями структурой и так далее. организации, Эта её сотрудниками, информация заполняется администраторами и может использоваться для анализа деятельности объединения. Кроме того, подобный Интернет-ресурс будет полезен для сотрудников организации 4 тем, что они смогут изучать спрос потребителя, анализируя статистику посещения сайта и определённых его web-страниц. Итак, сформулируем цель и задачи курсовой работы. Цель курсовой работы – создание Интернет-комплекса «Знание» для хранения и анализа информации. Предусмотрено решение следующих задач: 1. Обзор материалов, касающихся систем и технологий для их реализации. 2. Моделирование предметной области и обоснование выбранных средств разработки проекта 3. Программная реализация проекта. 4. Подготовка презентации и отчёта по курсовой работе. 5 Глава 1. Выбор программных средств для реализации Интернет-комплекса «Знание» Для реализации Интернет-комплекса «Знание» были выбраны СУБД MySQL, язык программирования Java, а также технология Struts, которая является каркасом web-приложения и значительно облегчает его создание. 1.1. Выбор СУБД (MySQL). Целью курсовой работы было создание интернет-системы, обрабатывающей информацию о людях, мероприятиях, лекциях. Естественно, возникает вопрос, в каком виде должна храниться эта информация и с помощью каких средств её следует обрабатывать. Так как, например, информация о каждом отдельном человеке представляет собой типичный набор данных (фамилия, имя, отчество, биография и т. д.), то очевидно, что в этом случае целесообразно хранить их в реляционной базе данных на сервере. Посредством запросов к базе данных пользователь может получать нужные ему сведения, а администратор может добавлять и изменять данные. Выбор конкретной СУБД в качестве сервера баз данных осуществлялся исходя из тех преимуществ, которые она имеет перед другими, а также удобства работы с ней. В данном случае был выбрана клиент-серверная СУБД MySQL. Её архитектура изображена на рис.1.1. 6 Рис. 1.1. Клиент-серверная архитектура MySQL Самая подходящая для MySQL сфера применения - это Интернет, благодаря хорошей системе безопасности этого пакета, стабильной работе и высокому быстродействию. Для создания скриптов был выбран язык программирования PHP, а MySQL – самая популярная СУБД, которая поддерживается этим языком. В PHP есть множество функций, которые позволяют удобно и эффективно работать с базами данных – и это одна из причин выбора данной СУБД. Рассмотрим преимущества MySQL: 1) Быстродействие Благодаря внутреннему механизму многопоточности быстродействие MySQL весьма высоко. Для разработчиков MySQL скорость всегда являлась ключевым параметром. Новые возможности добавлялись в пакет MySQL только после того, как их удавалось реализовать без ущерба для производительности. Иногда это означало, что некоторые возможности добавлялись не так быстро, как хотелось бы пользователям, но зато всегда гарантировало быструю работу MySQL. 2) Безопасность Довольно высокий уровень безопасности обеспечивается благодаря базе данных mysql, создающейся при установке пакета и содержащей пять таблиц. При помощи этих таблиц можно описать, какой пользователь из какого домена с какой таблицей может работать и какие команды он может применять. Пароли, хранящиеся 7 в базе данных, можно зашифровать при помощи встроенной в MySQL функции password(). 3) Лицензия Раньше лицензирование MySQL было немного запутанным; сейчас эта программа для некоммерческих целей распространяется бесплатно. 4) Открытость кода Благодаря этому программист может сам добавлять в пакет нужные функции, расширяя его функциональность так, как ему требуется. За отдельную плату это могут сделать и сами авторы MySQL. 5) Простота использования Для начала работы с MySQL не требуется сложной процедуры конфигурации. MySQL Server начнёт работать соответствующим образом сразу. По умолчанию выбираются значения, соответствующие минимальному использованию ресурсов диска и памяти. Для получения оптимальной производительности и для специальных условий (например, для проверки входа в систему), конечно же, потребуется дополнительная настройка. Чтобы помочь выполнить такую настройку, предлагаются соответствующие примеры файлов типовой конфигурации. 6) Сообщество Как следствие открытости кода, бесплатности программы, стабильной и надежной ее работы образовалось сообщество людей, которые не просто лояльны к MySQL, но и всячески участвуют как в развитии самого пакета, так и в обучении менее опытных людей работе с ним. Существует огромное количество листов рассылки и конференций, где можно получить бесплатную помощь в любое время суток. 7) Переносимость В настоящее время существуют версии программы для большинства распространенных компьютерных платформ. Это говорит о том, что вам не навязывают определенную операционную систему. Вы сами можете выбрать, с чем работать, например с Linux или Windows, но даже в случае замены ОС вы не потеряете свои данные и вам даже не понадобятся дополнительные инструменты для их переноса. 8 Конечно же, как и любое программное средство, СУБД MySQL не избавлена от некоторых недостатков. Например, можно назвать отсутствие вложенных запросов, что приводит к необходимости находить нужные значения отдельно и подставлять их в другой запрос непосредственно в CGI-сценарии, что, несомненно, сказывается на производительности. Несмотря на это, СУБД MySQL была выбрана как наиболее подходящий сервер баз данных для интернет-комплекса «Знание». 1.2. Язык программирования Java Объектно-ориентированный язык программирования Java широко используется для создания серверных приложений. Система Java создана на основе простого языка программирования, техника использования которого близка к общепринятой и обучение которому не требует значительных усилий. Java как язык программирования является объектно-ориентированным с момента основания. Кроме того программист с самого начала обеспечивается набором стандартных библиотек, обеспечивающих функциональность от стандартного ввода/вывода и сетевых протоколов до графических пользовательских интерфейсов. Эти библиотеки легко могут быть расширены. Несмотря на то, что язык С++ был отвергнут, синтаксис языка Java максимально приближен к синтаксису С++. Это делает язык знакомым широкому кругу программистов. В то же время из языка были удалены многие свойства, которые делают С++ излишне сложным для пользования, не являясь абсолютно необходимыми. В результате язык Java получился более простым и органичным, чем С++. Надежность и безопасность Java существенно облегчает создание надежного программного обеспечения. Кроме исчерпывающей проверки на этапе компиляции, система предусматривается анализ на этапе выполнения. Сам язык спроектирован так, чтобы вырабатывать у программиста привычку писать "правильно". Модель работы с памятью, в которой исключено использование указателей, делает невозможными целый класс ошибок, характерных для С и С++. 9 В силу того, что Java предназначен для работы в распределенной среде, безопасность становится чрезвычайно важной проблемой. Требования безопасности определяют многие черты как языка, так и реализации всей системы. Компилятор Java производит байт-коды, т.е. модули приложения имеют архитектурно-независимый формат, который может быть проинтерпретирован на множестве разнообразных платформ. Это уже не исходные тексты, но еще не платформно-зависимые машинные коды. Схема работы системы и набор байт-кодов виртуальной машины Java таковы, что позволяют достичь высокой производительности на этапе выполнения программы: анализ кодов на соблюдение правил безопасности производится один раз до запуска кодов на выполнение, в момент выполнения таких проверок уже не нужно, и коды выполняются максимально эффективно ; работа с базовыми типами максимально эффективна, для операций с ними зарезервированы специальные байт-коды; методы в классах не обязательно связываются динамически; автоматический сборщик мусора работает отдельным фоновым потоком, не замедляя основную работу программы, но в то же время обеспечивая своевременный возврат свободной памяти в систему; стандарт предусматривает возможность написания критических по производительности участков программы в машинных кодах. Каждая из перечисленных характеристик по отдельности может быть найдена в уже существующих программных пакетах. Новым является соединение их в стройную непротиворечивую систему, которая должна стать всеобщим стандартом. 1.3. Технология Struts Struts – это каркас для разработки приложений, который создан и используется вместе с популярной J2EE (Java 2, Enterprise Edition) платформой. Он укорачивает время разработки и делает разработчиков более продуктивными, обеспечивая их набором инструментов и компонент для создания приложений. Использование каркаса означает, что программисту не нужно тратить время на создание всего приложения. Он может сосредоточиться на кодировании бизнес- 10 логики и представлении (presentation layer) приложения, а не на частях "верхнего уровня" таких как описание того как принимать входные данные от пользователя или как генерировать выпадающие списки на Веб-странице. Другое преимущество в использовании каркаса состоит в том, что он позволяет коду быть в большой степени независимым от платформы (как это и есть в случае Struts). И это может быть достигнуто во многих случаях даже без рекомпиляции кода – то же самое Веб-приложение (или ".war" файл) может просто быть скопирован с одного сервера на другой. Другое особенно важное преимущество – это то, что каркас дает для начинающих разработчиков "место для старта". Очевидно, что проще иметь основу для приложения и расширять её чем писать все с нуля. Это качество Struts сохраняет программистам дни или даже недели планирования и разработки. Struts опирается на шаблон проектирования Model-View-Controller (MVC, Модель-представление-поведение»). Шаблон MVC широко признан как один из самых хорошо разработанных и зрелых шаблонов проектирования которые используются в данное время. MVC – архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты. Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контролера), изменяя свое состояние. Представление (View). Отвечает за отображение информации (пользовательский интерфейс). Поведение (Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции. 11 Рисунок 1.2. Схема паттерна проектирования MVC Важно отметить, что как представление, так и поведение зависят от модели. Однако модель не зависит ни от представления, ни от поведения. Это одно из ключевых достоинств подобного разделения. Оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели. Каким же образом шаблон проектирования MVC реализуется в Struts? Компоненты моделей предоставляют "модель" для бизнес-логики или данные для Struts программы. Например, в Struts приложении, которое управляет данными клиентов, возможно было бы выгодно создать компонент модели "Customer", который бы предоставлял программе доступ к информации о клиентах. Компоненты моделей, как правило, являются стандартными Java классами. Для моделей не требуется специального формата, поэтому можно использовать код, написанный для других проектов. Компоненты представления это те части приложения, которые отвечают за презентацию информации и её прием от пользователя. В Struts компоненты представления соответствуют Веб-страницам. Компоненты представления используются для представления информации хранящейся в моделях. Обычно для каждой Веб-страницы в Struts приложении имеется один или более компонент представления. Компоненты представления создаются при помощи JavaServer Pages (JSP). Struts предлагает разработчику большое количество «JSP Custom Tags» (иногда называемых Struts Tags) которые расширяют обычные возможности JSP и упрощают разработку компонентов представления. 12 Компоненты контроля координируют деятельность в приложении. Имеется ввиду, например, прием данных от пользователя и обновление базы данных с помощью компонента модели или обнаружение ошибки back-end системой и ее обработка. Контроллер принимает данные от пользователей, принимает решение о том какие компоненты моделей должны быть обновлены и выбирает компоненты представления, которым посылается сообщение сигнализирующее о необходимости демонстрации обновленных результатов. Одно из главных преимуществ компонент контроля состоит том, что они позволяют разработчику перенести код, занимающийся обработкой ошибок, из JSPстраниц в само приложение. Это может значительно упростить логику в страницах и облегчить их разработку и обслуживание. Компоненты контроля в Struts являются Java классами и должны быть созданы по определенным правилам. В контексте Struts их обычно называют «Action classes». Таким образом, технология Struts позволяет разработчикам представлять (и проектировать) сложные приложения как последовательность относительно простых компонентов моделей, представления и контроля. Это ведёт к лучшим, более однородным и легче обслуживаемым проектам. 13 Глава 2. Анализ предметной области и создание концептуальной модели 2.1. Сбор информации о предметной области Анализируя предметную область, рассмотрим более подробно, в чём заключается деятельность Гродненской областной организации общественного объединения «Белорусское общество «Знание». Сотрудники общества разрабатывают лектории – циклы лекций, посвящённых одной тематике. Каждый лектор может заниматься лекционно-просветительской работой по нескольким направлениям. При этом в процессе подготовки лекций специалисту наверняка понадобится дополнительная информация. Результатом работы является лекторий. С ним специалист выступает в каких-либо учреждениях, организациях. Кроме выступлений с лекциями, организация может проводить и другие мероприятия, например встречи с интересными людьми. Фотографии, относящиеся к мероприятиям, также следует хранить в Интернет-комплексе. Таким образом, можно сделать вывод, что основная информация, которая интересует заказчиков в деятельности организации – это её сотрудники, направления, по которым они работают, и проводимые мероприятия. Для самих специалистов также интересна информация в помощь. Логично разделить всех посетителей Интернет-комплекса «Знание» на две группы: пользователи и администраторы. Предполагается, что в группу администраторов будут входить сами деятели общества (как специалисты-лекторы, так и управление организации). 1) Пользователи имеют возможность лишь ознакомиться с информационными ресурсами, представленными на сайте. Для этого им не нужно регистрироваться на сайте. Для всех пользователей должна быть доступна следующая информация: деятели общества, лектории, направления деятельности, мероприятия, фотографии. 2) Администраторы обязательно должны быть зарегистрированы в системе, т. е. иметь свои логин и пароль. Администратор также вправе удалить профиль пользователя либо назначить пользователя администратором с такими же правами. Помимо тех ресурсов, которые доступны обычным пользователям, администраторы имеют доступ к информации в помощь специалистам. 14 Кроме того, администратор непосредственно занимается наполнением Интернет-комплекса информацией. Итак, анализ предметной области позволяет нам выделить сущности и определить связи между ними. 2.2. Выделение сущностей При анализе предметной области были выделены следующие сущности: деятели, лектории, направления деятельности, мероприятия, фотографии, информация в помощь. 1) Деятели Фамилия Имя Отчество Статус (занимаемая должность) Контактные данные Краткая биография Резюме Фотография 2) Лектории Название Описание Ссылка (ссылка на документ с подробным описанием лектория) Авторы 3) Направления деятельности Название Описание 4) Мероприятия Дата Тип мероприятия (лекция, встреча, организационное собрание и т. д.) Тема Место проведения Направления деятельности, по которым проводится мероприятие 15 Участники мероприятия (деятели) Фотографии 5) Фотографии Дата Описание Ссылка на фотографию 6) Информация в помощь Тема Авторы Ссылка на информацию 2.3. Определение отношений между сущностями Далее определялись отношения между выделенными сущностями. В ходе этого процесса было выявлено, что в большинстве случаев для сущностей характерны отношения типа «многие-ко-многим». Это безусловно делает приложение более гибким, но усложняет его реализацию. Рассмотрим, например, сущность Мероприятие. Она характеризуется такими атрибутами, как Участники и Направления деятельности. Понятно, что участвовать в мероприятии могут несколько человек. С другой стороны, деятели принимают участие в множестве мероприятий. Мероприятие может проводиться по нескольким направлениям одновременно. В то же время по каждому направлению читается множество лекций, следовательно и в этом случае между Мероприятиями и Направлениями деятельности существует отношение «многие-ко-многим». Такая же ситуация наблюдаются и в отношении между сущностями Мероприятие и Фотография. 16 Рисунок 2.1. Фрагмент концептуальной модели данных Рассмотрим связь между сущностями Деятель и Лекторий. Очевидно, что лектор может быть автором многих лекториев. В то же время возможна ситуация соавторства, т.е. у лектория может быть два и более авторов. Получаем, что и для этих двух сущностей характерно отношение «многие-ко-многим». Далее, информация в помощь специалистам может быть посвящена не только одной тематике. С другой стороны по каждому направлению деятельности может быть собрано множество источников дополнительной информации в помощь. Следовательно между сущностями Информация в помощь и Направление деятельности существует отношение «многие-ко-многим». 2.4. Создание концептуальной модели Таким образом, построена концептуальная модель для данной предметной области. 17 Рис 2.2. Концептуальная модель данных 18 Глава 3. Программная реализация Интернет-комплекса 3.1. Логическая структура программы Давно известно, что любое серьёзное приложение должно быть грамотно спроектировано и разделено на отдельные модули, которые должны быть относительно независимыми друг от друга. Подобное разделение значительно облегчает не только реализацию приложения, но и возможную его модификацию. В этом заключается принцип модульности объектно-ориентированного программирования. Интернет-комплекс «Знание» представляет собой большое web-приложение с поддержкой базы данных, и целесообразно было разделить его на слои. Были выделены следующие слои приложения: 1. База данных. 2. Классы работающие с базой данных. 3. Классы-сущности. 4. Action-классы, работающие с сущностями. 5. Пользовательский интерфейс. Приложение реализовано с использованием технологии Struts, а значит его логическая структура сроится в соответствии с паттерном проектирования MVC. В данном случае к Модели (Model) относится вся бизнес-логика классов-сущностей и классов, работающих с базой данных. Пользовательский интерфейс является Представлением (View) в MVC. А все Action-классы, которые получают запросы пользователя и соответствующим образом их обрабатывают, представляют собой Контроллер (Controller). Рассмотрим названные слои более подробно. 3.2. База данных Таблицы базы данных – самый низкий логический уровень приложения. В соответствии с концептуальной схемой предметной области создана база данных Knowledge со следующими основными таблицами: Actors (Деятели) Events (Мероприятия) Lectories (Лектории) 19 Domains (Направления деятельности) Photo (Фотографии) Data (Информация в помощь) Так как между некоторыми таблицами используется связь «многие-комногим», то возникла необходимость создать дополнительные промежуточные таблицы: ActorsAndDomains ActorsAndEvents ActorsAndLectories ActorsAndPhoto DomainsAndData EventsAndDomains EventsAndPhoto В каждой из этих таблиц всего два столбца, содержащие значения первичных ключей тех таблиц, для которых данная таблица является промежуточной. 3.3. Классы работающие с базой данных Классы, которые относятся к этому логическому слою, находятся в пакете by.knowledge.database. Класс DBQueryHelper вспомогательный. Он генерирует SQL запросы к базе данных. Например, рассмотрим метод insertQuery, который конструирует SQL запрос, добавляющий новую запись в таблицу: public static String insertQuery(String table, String[] fields, String[] values) { String query = "INSERT INTO " + table + " ("; for (int i = 0; i < fields.length; i++) { query += fields[i] + ", "; } query = query.substring(0, query.length() - 2); query += ") VALUES ("; for (int i = 0; i < values.length; i++) { if ("null".equals(values[i])) { 20 query += "NULL, "; } else { query += "'" + values[i] + "', "; } } query = query.substring(0, query.length() - 2); query += ")"; return query; } В качестве параметров этот метод принимает название таблицы table, массив названий полей fields и массив соответствующих значений values. Таким образом, в коде не придётся писать полный запрос типа "INSERT INTO Domains (Name_Domain, Description_Domain) VALUES (‘Экология’, ‘Проблемы экологии’)". А достаточно будет вызвать метод insertQuery, передав ему необходимые параметры. Это позволяет избежать возможных опечаток в запросах и упростить разработку приложения. Класс DBConnection позволяет работать с базой данных. В нём реализованы методы, с помощью которых открывается и закрывается соединение с базой данных, а также методы, осуществляющие SQL-запросы. 3.4. Классы-сущности Как было упомянуто выше, для каждой сущности, выделенной на этапе анализа предметной области, создана таблица в базе данных. В принципе, используя SQL запросы к этим таблицам, уже можно реализовать необходимую функциональность приложения. Однако куда более проще и логичнее создать некоторую программную структуру для каждой сущности, и обращаться с соответствующими запросами к ней, а не непосредственно к базе данных. Вся логика работы с данными на диске будет скрыта в этой сущности, и тем самым будет реализован принцип инкапсуляции, который должен приложении. обязательно присутствовать в объектно-ориентированном 21 Классы, которые относятся к этому логическому слою, находятся в пакете by.knowledge.entities. Каждая сущность относится к одной определённой записи в таблице базы данных, а полям таблицы соответствуют атрибуты класса. В то же время сущность выступает, как самостоятельный объект, и имеет методы, унаследованные от абстрактного класса AbstractEntity, которые отвечают за загрузку, сохранение, удаление соответствующей записи в таблице. В качестве примера приведём метод, устанавливающий значения полей некоторой сущности. public boolean load(int id) throws EntityException { boolean loaded = true; this.id = id; try { DBConnection conn = new DBConnection(); String query = DBQueryHelper.selectQuery(getTableName(), new String[] { "*" }, getSelectCondition()); ResultSet rs = conn.executeQuery(query); if (loaded = rs.first()) { setValues(rs, 1); } conn.close(); return loaded; } catch (DBException e) { throw new EntityException("Can't load entity", e); } catch (SQLException e) { throw new EntityException("Can't load entity", e); } } Вначале устанавливается соединения с базой данных. Затем формируется SQLзапрос. Для этого методу selectQuery передаются параметры getTableName() (имя 22 таблицы), new String[] { "*" } (множество полей, которые необходимо выбрать, getSelectCondition() (условие отбора). После проверки, не является ли пустым результат запроса к базе данных, вызывается метод setValues, который присваивает полям объекта полученные значения. После завершения работы с базой данных соединение закрывается. Таким образом, классы-сущности позволяют работать с данными на более высоком уровне, чем просто обращение к файлам на диске или к базе данных. Благодаря этому соблюдается принцип модульности: классы, которые работают с сущностями, «не знают» о том, что является источником данных, и каким образом эти данные загружаются. В пакете by.knowledge.entities расположен также вспомогательный класс EntitiesManager. Он включает в себя часто используемые методы для работы с сущностями, например методы, которые возвращают список всех деятелей или лекториев. 3.5. Action-классы Совокупность Action-классов представляет собой контроллер приложения. Эти классы находятся в пакете by.knowledge.actions. По своей функциональности actionклассы, реализованные в данном приложении, делятся на добавляющие данные, удаляющие данные и другие. Главный и обычно единственный метод в каждом action-классе – execute. Рассмотрим пример метода execute для класса AddDomainAction: public class AddDomainAction extends Action { public ActionForward execute(ActionMapping mapping, form,HttpServletRequest request, HttpServletResponse response) ActionForm throws Exception { AddDomainFormBean domainForm = (AddDomainFormBean) form; DomainEntity domain = new DomainEntity(); domain.setName(domainForm.getName()); domain.setDescription(domainForm.getDescription()); domain.save(); 23 return (mapping.findForward("success")); } } Метод execute получает в качестве параметра объект класса AddDomainFormBean – форму с заполненными пользователем полями. Далее создаётся новый объект сущности DomainEntity и его поля инициализируются в соответствии со значениями формы. После этого объект domain сохраняется. 3.6. Пользовательский интерфейс Интерфейс пользователя реализуется в основном с помощью Jsp-страниц. Они расположены в директории WebContent. В приложении используется два типа Jsp-страниц: для просмотра информации об одном отдельном объекте (например, о мероприятии) и для просмотра списка всех однородных объектов (например, списка всех проведённых мероприятий). В начале страницы осуществляется проверка на то, является ли посетитель сайта администратором: boolean hasAdminRights = false; UserEntity currentUser = (UserEntity) session.getAttribute("currentUser"); if (currentUser != null) { hasAdminRights = currentUser.hasAdminRights(); } Для этого происходит попытка обратится к объекту “currentUser”, расположенному в сессии. Он будет находится в сессии только, если пользователь вошёл под своим логином и паролем. В зависимости от прав посетителя страница меняет свой внешний вид. Так у администраторов на странице domains.jsp отображается не только список всех направлений деятельности, но и форма для ввода нового направления. А также напротив каждого направления есть кнопка для его удаления. Заключение 24 Таким образом, в курсовом проекте был реализован Интернет-комплекс «Знание» для анализа и хранения информации с использованием программных средств MySQL, Java и технологии Struts. Были решены следующие задачи: 1. Изучены материалы, касающиеся систем и технологий для их реализации. 2. Произведено инфологическое моделирование предметной области 3. Осуществлена программная реализация проекта. В будущем возможно расширение функциональности Интернет-комплекса. В частности, ведение статистики, которая может быть полезна как пользователям, так и самим сотрудником общества. 25 Список использованных источников 1. Аткинсон, Л. MySQL. Библиотека профессионала / Л. Аткинсон // Пер. с англ. – М.: Издательский дом «Вильяме», 2002 – 624 с. 2. Struts User’s Guide [Electronic resource] – Mode of access: http://struts.ru/userGuide/index.html – Date of access: 22.10.2007. 3. Дейтел, Х.М. Технологии программирования на Java 2 / Х.М. Дейтел, П.Дж. Дейтел, С.И. Сантри // Пер. с англ.– М.: ООО «Бином-Пресс», 2003 г. – 560 с. 26 Приложение А Внешний вид программы Рисунок 1. Страница с информацией о деятеле Рисунок 2. Регистрация нового пользователя 27 Рисунок 3. Добавление администратором нового деятеля