Спецификация каркаса для Servlet’ов на основе шаблона Model-View-Controller
Автор: Евгений Игумнов mailto:igumnovATgmail.com,
магистр технических наук, руководитель проекта в фирме ООО “Геокад плюс” (Новосибирск)
1. UML-документации для каркаса Servlet’ов
1.1. Прецеденты использования каркаса Servlet’ов
Каркас Servlet’ов является прослойкой между web-сервером Tomcat и Servlet’ами что позволяет логику Servlet’ов разделить на две части: действие (Action) над чем-либо и формирование HTML кода (ActionForm). Также каркас позволяет хранить сценарий взаимодействия Servlet’ов не в коде самих Servlet’ов, а в конфигурационном файле (action.xml). Также каркас содержит стандартный механизм сообщений об ошибках происходящих в Servlet’ах.
1.2. Диаграмма пакетов каркаса Servlet’ов
Код каркаса Servlet’ов находится в пакете com.geocad.wc.sfw. В пакете com.geocad.wc.sfw.semantic например находится web-приложение редактора семантики построенном на основе каркаса и как видно из диаграммы реализация этого пакета зависит от реализации пакета с каркасом com.geocad.wc.sfw.
1.3. Концептуальная диаграмма каркаса Servlet’ов
Каркас построен на основе одного Servlet’а ActionServlet, который вызывает Web-сервер Tomcat. При первом обращении web-пользователя к ActionServlet происходи его инициализация, которая заключается в загрузке файла action.xml содержащий сценарий взаимодействия с Servlet’ами. При этой инициализации в сессии для пользователя создается для него контейнер UserContext на основе загруженного файла action.xml. Другими словами содержимое контейнера UserContext заполняется объектами классов ActionErrors, ActionForms и тд. на основе этого файла. Для вызова Servlet’ов, находящихся под каркасом необходимо в URL указать переменную action по содержанию которой будет вызван соответствующий Action и ActionForm. Например:
http://host:8080/wc_servlet/ActionServlet;jsession...
Каждый Action имеет свой ActionMapping, который описывает возможные переадресации ActionForward на другие Action после его выполнения. К ActionMapping прикреплено по Action и ActionForm и выражается не в связи классов а в двух его переменных actionClass и formClass. Также UserContext содержит контейнер с ошибками ActionErrors, которые могут быть помещены в него классом Action.
1.4. Диаграммы взаимодействия для прецедентов использования каркаса Servlet’ов
1.4.1. Вызов Servlet'ов
Tomcat передает запрос в каркас (ActionServlet). ActionServlet на основе параметра action в запросе производит считывание других параметров вызывая метод validate на servletView:ActionForm относящимся к текущему action находящегося в ActionMapping.formClass. Далее каркас инициирует Action вызывая perform на servletCommand:Action относящимся к текущему action находящегося в ActionMapping.actionClass. После выполнения Action каркас вызывает формирование HTML методом drow на viewServlet:ActionForm относящимся к текущему action находящегося в ActionMapping.formClass.
1.4.2. Перенаправление в другой Servlet
Tomcat передает запрос в каркас (ActionServlet). Далее каркас инициирует Action вызывая perform на servletCommand:Action относящимся к текущему action находящегося в ActionMapping.actionClass. Вовремя выполнения действия принимается решении о переадресации в другой Action с помощью ActionForward по имени этого Action’а. Каркас получив ActionForward в результате выполнения perform над commandServlet выполняет переадресацию на forwarededServletCommand вызывая на нем метод perform.
1.4.3. Считывание параметров http-запроса
Tomcat передает запрос в каркас (ActionServlet). ActionServlet на основе параметра action в запросе производит считывание других параметров вызывая метод validate на servletView:ActionForm относящимся к текущему action находящегося в ActionMapping.formClass. Далее каркас инициирует Action вызывая perform на servletCommand:Action относящимся к текущему action находящегося в ActionMapping.actionClass. Во время выполнения Action для него возникает необходимость извлечь параметры из http-запроса которые были уже считаны ActionForm и для этого он узнает через UserContext о ActionForm которая прикреплена к текущему actin. Далее он считывает нужные ему параметрами с помощью методов get***()
1.4.4. Сообщение о возникшей ошибке
Tomcat передает запрос в каркас (ActionServlet). ActionServlet на основе параметра action в запросе производит считывание других параметров вызывая метод validate на servletView:ActionForm относящимся к текущему action находящегося в ActionMapping.formClass. Далее каркас инициирует Action вызывая perform на servletCommand:Action относящимся к текущему action находящегося в ActionMapping.actionClass. Во время выполнения Action возникает ошибка ActionError которую он создает и помещает в контейнер ActonErrors. После выполнения Action каркас вызывает формирование HTML методом drow на viewServlet:ActionForm относящимся к текущему action находящегося в ActionMapping.formClass. Во время формирования HTML, ActionForm считывает ошибку ActionError для внедрения ее в HTML-код.
1.5. Детальная диаграмма классов каркаса Servlet’ов
1.6. Диаграмма компонентов каркаса Servlet’ов
Каркас представляет с собой всего один компонент завернутый в sfw.jar. Имеется всего два абстрактных класса Action и ActionForm выступающих в роли интерфейсов наследуя которые, можно использовать каркас для создания web-приложений.
1.7. Диаграмма структуры XML файл конфигурации каркаса Servlet’ов



