- •Содержание
- •1 Описание предметной области
- •Социальной сети «в общаге» и
- •Определение требований к системе с
- •Точки зрения предметной области
- •1.2 Определение требований к социальной сети «в Общаге»
- •1.3 Функциональная модель социальной сети «в Общаге»
- •2 Постановка задач и обзор методов её решения, спецификация вариантов использования «социальной сети»
- •3 Модели представления «социальной сети» и их
- •3.1.4 Диаграмма компонентов
- •3.1.5 Диаграмма развёртывания
- •3.2 Описание применения паттернов проектирования
- •3.3 Обоснование выбора технологии клиентского приложения
- •4 Информационная модель системы социальной сети «в общаге» и её описание
- •5 Обоснование использования фреймворков spring mvc, spring security, javaserver faces, библиотеки commonsfileupload
- •5.1 Обоснование использования фреймворка Spring mvc
- •5.2 Обоснование использования фреймворка Spring Security
- •5.3 Обоснование использования фреймворка JavaServer Faces
- •5.4 Обоснование использования библиотеки commons-fileupload
- •6 Описание алгоритмов реализующих бизнес-логику серверной части социальной сети «в общаге»
- •7 Руководство пользователя
- •8 Результаты тестирования разработанной cистемы и оценка выполнения задач
- •8.1 Тестирование разработанной системы
- •8.2 Оценка выполнения задач
- •Список используемых источников
- •Приложение а
- •Приложение в (обязательное) Листинг sql-скрипта, генерирующего базу данных
- •Приложение г (рекомендуемое) Листинг некоторых файлов, используемых для работы Spring mvc
5 Обоснование использования фреймворков spring mvc, spring security, javaserver faces, библиотеки commonsfileupload
5.1 Обоснование использования фреймворка Spring mvc
Для разделения представления и бизнес-логики используется фреймворк Spring MVC. На рисунке 3.1.3.2 представлена диаграмма классов, которые используют библиотеки фреймворка. Листинг классов и страницы jsp, которые используются для отправки и получения сообщений пользователей, приведены в приложении Г. Для работы фреймворка нужно прописать в дескрипторе развёртывания web.xml сервлет (в данном проекте dispatcher) и указать класс из библиотек фреймворка. В <context-param> указать ссылку на конфигурационный файл applicationContext.xml, который нужно создать, и указать в нём бины. [10] В качестве бинов здесь представлены классы, заканчивающиеся на Service. В конфигурационном файле dispatcher-servlet.xml указаны бины. В качестве бинов здесь представлены классы-контроллеры. Также указано, в какой папке находятся страницы jsp. На страницах jsp можно использовать данные из класса, определённого в программе (в данном случае класса Name) следующим образом: <spring:bind path="nick"> (связывание с полем nick класса Name) (получение названия поля) value="${status.value}"> (получение значения поля) </spring:bind>.
В данной программе использовались контроллеры простой формы. Они используются преимущественно тогда, когда нужно обрабатывать формы. Опишем основные функции, которые были использованы. В конструкторе вызываются: setCommandClass(Name.class) – устанавливает класс, где содержатся поля, которые используются в страницах jsp; setCommandName("names") – устанавливает имя, по которому с установленным классом связывается jsp (в jsp это прописано <spring:nestedPath path="names"> ); setSuccessView("redirect:/person.htm") – устанавливает вид (страницу), которая будет после нажатия на кнопку Sumbit формы; setFormView("edit") – устанавливает отображаемую страницу при запросе, который ссылается на данный контроллер. Например, запрос edit.htm (в конфигурационном файле dispatcher-servlet.xml прописан editController, в web.xml прописано, что запрос формата *.htm обрабатывается сервлетом dispatcher) показывает станицу edit.jsp. После нажатия на кнопку Submit – страницу person.htm. В контроллере функция Object formBackingObject(HttpServletRequest request) вызывается каждый раз при обработке страницы, т.е. и перед показом страницы edit.jsp, и после нажатия кнопки Submit (перед выполнением функции OnSubmit). Функция OnSubmit вызывается после нажатия кнопки Sumbit. Документацию, библиотеки, необходимые для использования фреймворка, подробную настройку можно найти в [11].
5.2 Обоснование использования фреймворка Spring Security
Для реализации авторизации использовался фреймворк Spring Security, потому что он лёгок в использовании, имеет дополнительные функции для большей защиты, такие как хеширование паролей, добавление соли (строки для присоединения к паролю для того, чтобы пароль было сложнее подобрать). Аналогом выбранной реализации авторизации могло бы послужить использование сессий, но Spring Security упрощает процесс прописывания на каждой странице кода для проверки сессий. Он тоже использует технологию сессий, но она скрыта.
Для работы фреймворка нужно прописать в дескрипторе развёртывания фильтр и ссылку на applicationContext-security.xml. Листинг applicationContext-security.xml приведён ниже:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">
<http auto-config="true">
<form-login login-page="/login.jsp" authentication-failure-url="/loginer.jsp" default-target-url='/person.htm'/>
<intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/loginer.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/reg.htm*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/*" access="ROLE_USER, ROLE_ADMIN" />
<intercept-url pattern="/faces/*" access="ROLE_ADMIN" />
<logout logout-success-url="/login.jsp"/>
<intercept-url pattern="/hostel.css" filters="none"/>
</http>
<authentication-provider >
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider >
</beans:beans>
dataSource прописано в applicationContext.xml. В данном проекте это база данных. В этой базе данных должны быть таблицы с определённым названием и полями, которые описаны в разделе 4. Этого требуют библиотеки фреймворка. В applicationContext-security.xml прописаны форматы адресов и указан доступ для определённой группы пользователей. На страницы, для которых определена группа IS_AUTHENTICATED_ANONYMOUSLY может заходить любой посетитель. Также прописана страница ввода логина и пароля, куда переадресовывать в случае неправильного ввода логина и пароля, в случае выхода. [12]