21 января, 2008

В предыдущей статье я проводил обзор фреймворка Spring с целью ознакомить читателей с его общим устройством.

В данной статье я бы хотел перейти к планированию будущего приложения на Spring. Определить его цели, структуру и основные компоненты.

Итак, представим, что основная цель - это на протяжении всей серии статей получить базовые знания и представление необходимые для конструирования и разработки веб-приложений на Spring. В качестве учебного примера возьмём страницу инвайтов для моего проекта AllOfRSS.com. Задача: создать страницу, где пользователи могут оставлять свои e-mail для получения в будущем приглашений на тестирование проекта, а также страницу о проекте.

Я специально не привожу в качестве примера сложных архитектурных решений, алгоритмов и функциональных решений, так-как честно считаю, что данного примера достаточно для формирования общего представления и знаний для того, чтобы начать пробовать использовать Spring самостоятельно. Главное дождаться и прочитать остальные статьи из серии.. :)

Для воплощения поставленной задачи в жизнь, необходимо предусмотреть такие функциональные части:

  • Контроллеры приложения и бработка данных
  • Маппинг реквестов (URLs)
  • Источник/хранилище данных
  • Дополнительные библиотеки

В Spring MVC присутствуют несколько типов контроллеров, каждый из которых представляет собой абстрактную реализацию адаптированную под конкретные требования. Всё что нам остается - это выбрать подходящий тип и унаследовать от него наши классы контроллеров. Вот существующие типы контроллеров: AbstractController, MultiActionController, AbstractCommandController, AbstractFormController, SimpleFormController, AbstractWizardFormController.

Для реализации поставленной задачи нам потребуется два типа контроллеров:

  • Для вывода и обработки формы (SimpleFormController).
  • Для отображения страницы о проекте (AbstractController).

Я лишь предлагаю вам использование тех или иных классов и никаким образом не навязываю. Вы всегда вольны самостоятельно выбирать нужную вам имплементацию.

Все мы прекрасно знаем, что удобные читаемые УРЛы понятны и легкодоступны не только пользователям, но и поисковикам. В Spring MVC есть несколько механизмов маппинга реквестов: BeanNameUrlHandlerMapping, SimpleUrlHandlerMapping, HandlerInterceptor. Для нашего приложение возьмём SimpleUrlHandlerMapping, так-как он позволяет более гибко сконфигурировать нужный нам маппинг.

Определим основные УРЛы приложения:

  • /welcome - главная страница, на которой размещается форма. Будет соотвествовать контроллеру вывода и обработки формы.
  • /about - страница с описанием проекта. Будет соответствовать контроллеру отображения страницы о проекте.

В качестве источника/хранилища данных выбираем вашу любимую базу данных и создаём табличку для хранения e-mail адресов пользователей. Я выбрал MySql, однако опять таки не ограничиваю вас в выборе. Для работы с базой данных будет использован Hibernate. Подключение и его настройка будут рассмотрены в следующей статье, посвященной непосредственно имплементации поставленной задачи.

Далее, список необходимых дополнительнх библиотек (скачиваем и ложим их в папочку WEB-INF/lib в проекте):

  • ant-antlr-1.6.5.jar
  • antlr-2.7.6.jar
  • cglib-nodep-2.1_3.jar
  • commons-beanutils-1.7.0.jar
  • commons-collections-3.2.jar
  • commons-dbcp-1.2.2.jar
  • commons-discovery.jar
  • commons-fileupload.jar
  • commons-httpclient-3.0.1.jar
  • commons-io.jar
  • commons-lang-2.3.jar
  • commons-logging.jar
  • commons-pool-1.3.jar
  • dom4j-1.6.1.jar
  • hibernate-validator.jar
  • hibernate3.jar
  • jdom.jar
  • jstl.jar
  • jta.jar
  • log4j.jar
  • mysql-connector-java-5.1.5-bin.jar
  • spring-hibernate3.jar
  • spring.jar
  • standard.jar

Теперь мы с вами на один шаг ближе к реализации поставленной задачи. Всё что теперь осталось - это всего лишь написать код, чем мы и займёмся в следующей статье.

Также читаем:


Комментариев (3) к записи «Разработка веб-приложений на Spring. Часть 1 (Проектирование)»: 

  1. 1 Mr.K

    Классное начало! Но, я думаю, куда проще использовать Spring управляя зависимостями через Maven, вряд-ли людям важно знать потроха системы…

  2. 2 Андрей Ясинецкий

    спасибо!
    насчет библиотек согласен, переборщил. в принципе, это не такая уж важная информация.
    Maven действительно удобная штука, но я пользовался им слишком мало, чтобы описывать в статье :(

  3. 3 Mr.K

    С Maven очень советую разобраться. У меня когда-то ушло довольно много времени (неделя, может даже 6-7 рабочих дней), пока научился им правильно пользоваться, зато после этого стало страшно, как это можно было ручками складировать кучи джаров в WEB-INF/lib, писать сложные ANT-скрипты и.т.д. :)

Оставить комментарий