Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснительная записка к курсачу по САПИС - 9 баллов.doc
Скачиваний:
249
Добавлен:
01.04.2014
Размер:
640 Кб
Скачать

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]