Связь 1:М между таблицей authors и author_post. Установлено правило на удаление CASCADE.
Связь 1:1 между таблицей author_post и content. Установлено правило на удаление CASCADE.
2.5 Проектирование пользовательского интерфейса
Интерфейс - в широком смысле - определенная стандартами граница между взаимодействующими независимыми объектами. Интерфейс задает параметры, процедуры и характеристики взаимодействия объектов.
Интерфейс пользователя - элементы и компоненты программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением.
Есть несколько простых правил, позволяющих интерфейсу магазина быть понятым клиенту.
1. Чем проще, тем лучше. Это вовсе не значит, что должен быть только текст и контактная информация, но на сайте не должно быть бесполезной информации, шрифт должен легко читаться. Графические элементы должны быть были чёткими, выразительными и быстро загружаться. На сайте блога недопустимо использовать анимацию и звук, которые долго загружаются и отвлекают внимание пользователя.
Человеческий глаз просматривает страницы сайта сверху вниз. Наибольшее внимание сосредотачивается на верхней левой части страницы. Поэтому в верхней части страницы сайта, как правило, размещается наиболее важная информация: название фирмы, логотип, само название сайта и т.д.
2. Товары должны быть распределены по группам. Для наглядности необходимо предусмотреть специальные разделы, содержащие товары, сгруппированные по маркетинговым признакам. Допустим:
· «Последние» (статьи, недавно опубликованные на сайте);
· «Популярные» (наиболее просматриваемые статьи).
На рисунке 3.4 показан макет главной страницы магазина. На каждой странице сайта вверху закреплено меню, которое содержит ссылки для перехода по различным категориям товаров, а также ссылки на авторизацию, регистрацию, личный кабинет покупателя.
Рисунок 2.4 - Макет главной страницы магазина
На рисунке 3.5 показан макет информации о статье. Страница информации о статье разделена на несколько блоков. Слева расположена информация об авторе и кнопки оценки материала. Справа расположено тело статьи с графическими материалами.
Рисунок 2.5 - Макет страницы товара
Также сайт должен быть адаптивен для мобильный устройств. В случае с макетом страницы описания статьи страница перестанет делиться на левую и правую часть. На мобильном устройстве левая часть страницы будет выведена выше, а правая часть будет выведена ниже.
Спроектированный интерфейс сочетает в себе два важных аспекта: простота и удобство использования. На страницах размещена только необходимая информация. Количество кнопок и ссылок сведено к минимуму. Благодаря этому пользователю будет легче ориентироваться на сайте.
3. Реализация
3.1 Серверная часть системы
3.1.1 Описание пакетов
Пакет dao. Для хранения data access object. В программном обеспечении data access object (DAO) -- это объект, который предоставляет абстрактный интерфейс к какому-либо типу базы данных или механизму хранения. Определённые возможности предоставляются независимо от того, какой механизм хранения используется и без необходимости специальным образом соответствовать этому механизму хранения. Этот шаблон проектирования применим ко множеству языков программирования, большинству программного обеспечения, нуждающемуся в хранении информации и к большей части баз данных, но традиционно этот шаблон связывают с приложениями на платформе Java Enterprise Edition, взаимодействующими с реляционными базами данных через интерфейс JDBC, потому что он появился в рекомендациях от фирмы Sun Microsystems.
Основным преимуществом использования объектов доступа к данным является относительно простое и строгое разделение между двумя важными частями приложения, которые могут, но не должны ничего знать друг о друге, и от которых можно ожидать, что они будут развиваться часто и независимо. Изменение бизнес-логики может зависеть от того же интерфейса DAO, в то время как изменения в логике постоянства не влияют на клиентов DAO, пока интерфейс остается правильно реализованным.
Все детали хранилища скрыты от остальной части приложения (см. Сокрытие информации). Таким образом, возможные изменения в механизме персистентности можно реализовать, просто изменив одну реализацию DAO, в то время как остальная часть приложения не пострадает. DAO действуют как посредник между приложением и базой данных. Они перемещают данные назад и вперед между объектами и записями базы данных. Модульное тестирование кода облегчается заменой DAO на двойной тест в тесте, что делает тесты независимыми от уровня персистентности.
В общем контексте языка программирования Java объекты доступа к данным как концепция проекта могут быть реализованы несколькими способами. Это может варьироваться от довольно простого интерфейса, который отделяет части доступа к данным от логики приложения, до платформ и коммерческих продуктов.
В этом пакете хранятся классы, представляющие собой DAO сущностей базы данных и средства для работы с ними, такие как:
· user
· content
· tag
· contentTag
· type
Пакет entity. Для описания сущностей базы данных. Сущность базы данных -- это вещь, человек, место, единица, объект или любой элемент, о котором должны быть получены и сохранены данные в форме свойств, рабочего процесса и таблиц. Хотя рабочий процесс и таблицы являются необязательными для объекта базы данных, требуются свойства (поскольку объект без свойств не является объектом).
Свойство объекта является атрибутом объекта, но иногда трудно сказать, должен ли элемент базы данных быть объектом или свойством. Для этого вам нужно спросить себя: «Является ли элемент первостепенным интересом для базы данных или нет?» Например, «адрес электронной почты» представляет прямой интерес для «базы данных электронной почты», но, если вы создаете «базу данных клиентов» «клиент» будет объектом базы данных, а «адрес электронной почты» будет собственностью клиента.
Некоторые из свойств объекта могут представлять отношения объекта базы данных, то есть связывать один объект с другим объектом. Например, сущность «Работа» может иметь свойство «Клиент», которое ссылается на сущность «Клиент», поэтому при создании новой работы вы можете раскрыть список клиентов и выбрать клиента, для которого эта работа будет выполнена.
В этом пакете хранятся классы, представляющие собой описания сущностей базы данных, такие как:
· user
· content
· tag
· contentTag
· type
Пакет servlets. Для хранения сервлетов. Сервлет является интерфейсом Java, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов. Для таких приложений технология Java Servlet определяет HTTP-специфичные сервлет классы. Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для создания сервлетов.
Первая спецификация сервлетов была создана в Sun Microsystems (версия 1.0 была закончена в июне 1997). Начиная с версии 2.3, спецификация сервлетов разрабатывалась под руководством Java Community Process. Стандарт JSR 53 определял как Servlet 2.3, так и спецификацию JavaServer Page 1.2. JSR 154 включает в себя спецификации Servlet 2.4 и 2.5. Текущая спецификация на 13 июня 2013 года -- Servlet 3.1 (описана в JSR-340).
Сервлет Java обрабатывает или хранит класс Java в Java EE, который соответствует API сервлета Java, стандарту для реализации классов Java, которые отвечают на запросы. Сервлеты в принципе могут взаимодействовать по любому клиент-серверному протоколу, но чаще всего они используются с HTTP. Таким образом, «сервлет» часто используется в качестве сокращения для «сервлета HTTP». Таким образом, разработчик программного обеспечения может использовать сервлет для добавления динамического контента на веб-сервер с использованием платформы Java. Сгенерированный контент обычно представляет собой HTML, но это могут быть и другие данные, такие как XML и чаще JSON. Сервлеты могут поддерживать состояние в переменных сеанса во многих транзакциях сервера, используя файлы cookie HTTP или сопоставление URL-адресов.
API сервлетов Java в некоторой степени был заменен двумя стандартными технологиями Java для веб-сервисов:
· API Java для веб-сервисов RESTful (JAX-RS 2.0), полезный для сервисов AJAX, JSON и REST, и
· Java API для веб-служб XML (JAX-WS), полезный для веб-служб SOAP.
Для развертывания и запуска сервлета необходимо использовать веб-контейнер. Веб-контейнер (также известный как контейнер сервлетов) по сути является компонентом веб-сервера, который взаимодействует с сервлетами. Веб-контейнер отвечает за управление жизненным циклом сервлетов, сопоставление URL-адреса с конкретным сервлетом и обеспечение того, чтобы запрашивающий URL-адрес имел правильные права доступа.
Servlet API, содержащийся в иерархии пакетов Java javax.servlet, определяет ожидаемое взаимодействие веб-контейнера и сервлета.
Сервлет -- это объект, который получает запрос и генерирует ответ на основе этого запроса. Базовый пакет сервлета определяет объекты Java для представления запросов и ответов сервлета, а также объекты для отображения параметров конфигурации сервлета и среды выполнения. Пакет javax.servlet.http определяет специфичные для HTTP подклассы общих элементов сервлета, включая объекты управления сеансами, которые отслеживают множественные запросы и ответы между веб-сервером и клиентом. Сервлеты могут быть упакованы в файл WAR как веб-приложение.
Сервлеты могут генерироваться автоматически из JavaServer Pages (JSP) компилятором JavaServer Pages. Разница между сервлетами и JSP заключается в том, что сервлеты обычно встраивают HTML-код в код Java, тогда как JSP-файлы встраивают код Java в HTML. Хотя прямое использование сервлетов для генерации HTML (как показано в примере ниже) стало редкостью, веб-инфраструктура MVC более высокого уровня в Java EE (JSF) все еще явно использует технологию сервлетов для низкоуровневой обработки запросов / ответов с помощью FacesServlet. Несколько более старое использование состоит в том, чтобы использовать сервлеты в сочетании с JSP в шаблоне, называемом «Модель 2», который является разновидностью модели - вида - контроллера.
Пакет utils. Для вспомогательных программ в составе программного обеспечения, так называемого служебного ПО. Служебное программное обеспечение -- это системное программное обеспечение, предназначенное для анализа, настройки, оптимизации или обслуживания компьютера. Он используется для поддержки компьютерной инфраструктуры - в отличие от прикладного программного обеспечения, которое нацелено на непосредственное выполнение задач, которые приносят пользу обычным пользователям. Однако утилиты часто образуют часть прикладных систем. Например, пакетное задание может запускать пользовательский код для обновления базы данных и затем может включать в себя этап, на котором запускается утилита для резервного копирования базы данных, или задание может запускать утилиту для сжатия диска перед копированием файлов.
Хотя базовый набор служебных программ обычно распространяется с операционной системой (ОС), а служебное программное обеспечение считается частью операционной системы, пользователи часто устанавливают замены или дополнительные утилиты. Эти утилиты могут предоставлять дополнительные возможности для выполнения задач, выходящих за пределы возможностей операционной системы.
Многие утилиты, которые могут повлиять на всю компьютерную систему, требуют, чтобы пользователь имел повышенные привилегии, в то время как другие, которые работают только с данными пользователя, этого не делают.
Утилиты предоставляют доступ к возможностям (параметрам, настройкам, установкам), недоступным без их применения, либо делают процесс изменения некоторых параметров проще (автоматизируют его). Они могут входить в состав операционных систем, идти в комплекте со специализированным оборудованием или распространяться отдельно.
По зависимости от операционной системы можно различать:
· Независимые утилиты, не требующие для своей работы операционной системы;
· Системные утилиты, входящие в поставку ОС и требующие её наличия;
· Оптимизатор диска для восстановления целостности файловой системы и дефрагментации.
3.1.4 Mapping сущности Content в Hibernate
В управлении данными сопоставление данных -- это процесс создания сопоставление элементов данных между двумя различными моделями данных. Cопоставление данных используется в качестве первого шага для широкого спектра задач интеграции данных, в том числе:
· Преобразование данных или передача данных между источником данных и пунктом назначения
· Идентификация отношений данных как часть анализа происхождения данных
· Обнаружение скрытых конфиденциальных данных, таких как последние четыре цифры номера социального страхования, скрытого в другом идентификаторе пользователя, в рамках проекта маскирования данных или де-идентификации
· Консолидация нескольких баз данных в одну базу данных и определение избыточных столбцов данных для консолидации или исключения
Например, компания, которая хотела бы передавать и получать покупки и счета-фактуры с другими компаниями, могла бы использовать сопоставление данных для создания карт данных из данных компании в стандартизированные сообщения ANSI ASC X12 для таких элементов, как заказы на покупку и счета-фактуры.
Mapping (сопоставление, проецирование) Java-классов с таблицами базы данных осуществляется с помощью конфигурационных XML-файлов или Java-аннотаций. При использовании файла XML Hibernate может генерировать скелет исходного кода для классов длительного хранения. В этом нет необходимости, если используется аннотация. Hibernate может использовать файл XML или аннотации для поддержки схемы базы данных.