Содержание
1. Введение
Постановка задачи
Обзор возможных решений
Используемые инструменты и технологии
Проектирование базы данных
Проектирование бизнес-логики
Разработка системы
Разработка с использованием Spring MVC
The DispatcherServlet
Конфигурация приложения
Определение контроллера
Представления
Создание формы
Создание структуры проекта
Подключение сервера приложений Glassfish
Контроллер и представление
Вывод
2. Разработка системы с использованием технологий Spring web flow, jsf
Проектирование пакетов
Разработка на Spring Web Flow
Получение информации
Вывод данных в представление
Пользовательский интерфейс
Вывод
Заключение
Список использованной литературы
Приложения
1.
Введение
Данная работа посвящена изучению технологий веб программирования на java и созданию информационно-поисковой системы для хранения слабоструктурированных данных для некоторого предприятия.
Данное предприятие занимается средствами массовой информации, соответственно им необходимо хранить большие архивы информации, такие как видео, радио, журналы и выпуски в различных форматах. Исторически все архивы сохраняются вручную, и поиск по таким архивам так же осуществляется вручную. Однако такой подход несет в себе много лишней ручной работы по сохранению, редактированию и поиску.
Наиболее подходящим решением для данной задачи является web-приложение, которое будет оперировать всеми данными с помощью базы данных и web-браузера в качестве клиента пользователя.
Для реализации такой системы был выбран язык программирования java, основные преимущества которого: высокая скорость разработки и распространенность.
Исходные условия: есть архивы информации в различных форматах. Необходимо осуществить редактирование, добавление информации и поиск по архивам данных.
Исходные данные: журналы в формате doc, выпуски в формате docx, видео в формате avi, звуковые файлы в формате wav.
Так как у исходных данных нет строгой структуры, и эти форматы не соответствуют строгой структуре таблиц и отношений в моделях реляционных баз данных, нельзя использовать алгоритмы поиска структурированных данных. В данной задаче вся информация будет располагаться на сетевом хранилище NAS (Network Attached Storage), а вся метаинформация о каждом файле будет находиться в базе данных. Благодаря такому подходу становится возможным оперирование данными, хранящимися в различных форматах без четкой структуры.
Для этих целей необходимо спроектировать и реализовать информационную систему, отвечающая следующим требованиям:
· Функциональные
o Возможность добавлять новую информацию в архив
o Возможность редактирования существующей информации
§ Переименование
§ Изменение метаданных
o Осуществление поиска по метаданным
o Отображение данных
o Понятный интерфейс для пользователей
· Инструментальные
o Реализации на платформе java с использованием фреймворков Spring web flow, prime-faces, spring web mvc.
o Использование Spring security для аутентификации и обеспечения безопасности данных.
o Использование сервера приложений Glassfish
o Использование
в качестве СУБД - Mysql
Решить поставленную задачу можно следующими способами:
. Использование стандартного подхода Java2EE к созданию web-приложений с помощью EJB (Enterprise Java Beans).
Плюсы: наличие открытой спецификации, полная интеграция с другими технологиями Java, быстрый цикл разработки.
Минусы: сложность изучения, сложность архитектуры, возможность неоправданного усложнения приложения.
2. Использование популярного фреймворка Spring
Плюсы: Он работает в таких областях, где практически не возможно использовать другие популярные фреймворки. Главная цель Spring это предоставить способ управлять бизнес-объектами
Многослойная архитектура Spring позволяет использовать любую свою часть отдельно от другой, несмотря на это его внутренняя архитектура согласована.
2.1 Использование стандартного Spring mvc
Плюсы: скорость обучения, скорость разработки
Минусы: сложность написания сложного приложения без подключения дополнительных фреймворков
2.2 Использование технологии Spring web flow, prime-faces, spring web mvc
Плюсы: Возможность решить любые задачи бизнес логики, возможность использования JSF (JavaServer Faces).
JSF основывается на компонентном использовании, в отличии от других MVC-фреймворков, которые управляются запросами.
Минусы: сложность обучения.
В данной работе я рассмотрю 2 варианта разработки такой системы.
. С использованием стандартного Spring mvc
2. С использованием технологий Spring web flow, spring web mvc, jsf.
И наиболее оптимальный вариант будет использоваться в реализации поисковой системы.
Для проектирования и разработки информационно-поисковой системы используются следующие инструменты:
1. Intellij idea - IDE для разработки приложений на Java.
2. Apache Glassfish - сервер приложений.
. Mysql - СУБД для хранения данных системы.
4. Mysql workbench - утилита для проектирования базы данных.
5. Visual Use case - утилита для проектирования системы.
Используемые языки:
. Java - объектно-ориентированный язык программирования.
2. HTML (HyperText Markup Language) - язык гипертекстовой разметки документов, используемый во Всемирной паутине (WWW).
3. CSS (Cascade Style Sheet) - язык для описания внешнего стиля документа.
4. JavaScript - прототипно-ориентированный сценарный язык программирования, используемый на стороне клиента веб-приложения.
Для визуального проектирования базы данных была взята утилита Mysql Workbench.
MySQL Workbench упрощает разработку и обслуживание баз данных, позволяет автоматизировать отнимающих много времени и подверженных ошибкам задач, а также улучшает коммуникацию между DBA (Администратор базы данных) и разработчиков команд. Это позволяет архитекторам данных визуализировать требования, общаться с заинтересованными сторонами, и решать вопросы проектирования. Она позволяет на основе моделей проектировать базы данных, которые являются наиболее эффективной методикой для создания достоверных и быстрых баз данных, обеспечивая при этом гибкость для удовлетворения меняющихся потребностей бизнеса. Модель и схема валидации данных обеспечивает соблюдение всех стандартов для моделирования данных, а также обеспечивает соблюдение всех MySQL стандартов физического проектирования, что исключает возникновение ошибок при создании новых диаграмм ER или формирования физических баз данных MySQL.
Для визуализации проектирования базы данных используем ER - диаграмму (Рис. 1):
информационная поисковая система программирование
Рис. 1. ER-диаграмма
Сущности представляются в виде прямоугольников, у которых: в верхней части указано имя сущности, в нижней - атрибуты. Символы на концах связей обозначают модальность связи: "один-к-одному", "многие-ко-многим", "один-ко-многим".
При построении ER диаграммы была учтена 3 нормальная форма отношений в реляционной базе данных.
Для проектирования системы была использована программа Visual Use Cases, которая позволяет
строить user stories, use cases и диаграммы, так же есть возможность работать в
команде (Рис. 2).
Рис. 2. Интерфейс программы Visual Use Case
Благодаря данной программе можно создать необходимые на начальном этапе диаграммы и пользовательские истории, а после реализации "скелета" добавить весь дополнительный функционал с помощью историй, которые внесут заказчики.
Первым этапом проектирования бизнес-логики является написание пользовательских историй, которые в последствии будут перенесены в Use case, а затем по ним будет составлена диаграмма вариантов использования (use case). Для реализации "скелета" необходимо реализовать следующие сценарии использования (use case):
1. Регистрация
2. Загрузка информации в базу
. Доступ к ресурсам
. Поиск материала по базе
. Чат
6. Форма для подачи заявки на мониторинг
. Оплата за предоставленные услуги (мониторинг)
8. Расширение аккаунта до PRO версии
По данным сценариям необходимо создать диаграмму вариантов
использования (Рис. 3).
Рис. 3. Диаграмма вариантов использования (use case)
Данная диаграмма отображает возможные варианты использования
информационной системы, их требования и последовательность возникновения,
которые они реализуют. Связь extend
обозначает расширение возможностей базового класса.
Чтобы сравнить 2 варианта разработки и определить наилучший, будет реализовано 2 приложения, использующие разные наборы фреймворков. Форма для добавления pdf файлов в базу данных и главная система с поиском слабо-структурированных данных.
MVC Framework Spring Web обеспечивает архитектуру представление-модель - контроллер и готовые компоненты, которые могут быть использованы для разработки гибких и слабо связанных веб-приложений. Шаблон MVC приводит к разделению различных аспектов применения (входная логика, бизнес-логика), обеспечивая при этом слабую связь между этими элементами.
Model инкапсулирует данные приложения, которые будут состоять из POJO (Plain Old Java Object).
View отвечает за предоставление данных модели, в целом он генерирует вывод HTML, который может интерпретировать браузер клиента.
Controller отвечает за обработку запросов пользователей и построения соответствующей модели и передает его в представление для рендеринга.
Spring Web model-view-controller работает с
помощью DispatcherServlet, который обрабатывает все HTTP-запросы и HTTP-ответы. Обработка
запроса рабочего процесса в Spring Web MVC DispatcherServlet показана на следующей
диаграмме (Рис. 4):
Рис. 4. DispatcherServlet
Ниже приводится последовательность событий для входящего запроса HTTP к DispatcherServlet:
· После получения HTTP запроса DispatcherServlet вызывает соответствующий контроллер с помощью HandlerMapping.
· Контроллер принимает запрос и вызывает соответствующие методы сервисов на основе используемого метода GET или POST. Метод сервиса устанавливает данные модели, основанные на определенной бизнес-логике и возвращает имя представления в DispatcherServlet.
· DispatcherServlet с помощью ViewResolver обрабатывает определенное представление в зависимости от метода запроса.
· После того как просмотр завершен, DispatcherServlet передает данные модели представления, которая, наконец, отображает его в браузере.
Все указанные выше компоненты, т.е. HandlerMapping, Controller и ViewResolver являются частями WebApplicationContext, которая является продолжением обычной ApplicationContext с некоторыми дополнительными функциями, необходимыми для веб-приложений.
Сперва нам необходимо отобразить запросы, которые должен
обрабатывать DispatcherServlet, используя отображение URL в файле web. xml (Рис.5).
Рис. 5. Настройка web. Xml
При инициализации appServlet DispatcherServlet фреймворк будет пытаться загрузить
контекст приложения из файла с именем [имя сервлета] - servlet. xml, который
находится в каталоге webapp / WEB-INF приложения. В этом случае наш файл будет servlet-context. xml (Рис.6).
Рис. 6. Servlet-context. xml
Далее тег <servlet-mapping> указывает на URL-адреса, которые будут обрабатываться посредством DispatcherServlet. Здесь все запросы HTTP, будут обрабатываться appServlet DispatcherServlet.