На рис. 11.7 показана общая структура прецедента "Вход в систему".
Попробуем быстро пройти по этой структуре и понять, что в ней происходит. Стран и-ца сервера Login.jsp— точка входа в прецедент. Она связана со страницей клиента Login.jsp_Client, которая включает форму LoginForm, позволяющую пользователю вводить информацию. Когда пользователь заполнит и отправит форму, ее обработает сервлет LoginServlet, взаимодействуя с соответствующими объектами-сущностями (моделирование и реализация объектов-сущностей рассматриваются в главе 13). Он проверит правильность введенной информации. Если попытка входа в систему будет неудачной, сервлет отобразит сообщение об ошибке и снова возвратит управление в Login.jsp. Если вход в систему прошел успешно, управление передается другому объекту (не показан).
Обратите внимание на использование компонентов Banner.jsp и Footer.jsp. Хотя мы могли поместить их информацию непосредственно в общий компонент JSP, мы выбрали другой подход, облегчающий повторное использование частей приложения.
Обычно в модели 2 принято передавать информацию между сервлетом и JSP посредством компонента JavaBeans. Сервлет должен получить данные и загрузить их в JavaBeans, а затем передать запрос bJSP. В свою очередь, JSP собирает информацию из JavaBeans и выводит ее для конечного пользователя. Мы применим эту методику для связи между центральным контроллером в остальных прецедентах и разнообразными страницами вывода результатов.
|
На этом рисунке компонент Main.jsp создает исходную страницу для вызова различных команд, доступных пользователям системы HomeDirect. Все вызванные команды передаются сервлету MainServlet, который координирует действия объектов управления и объектов-сущностей (они не показаны и рассматриваются соответственно в главах 13 и 14). Когда MainServlet соберет всю информацию, необходимую для ответа, он помещает ее в JavaBeans и передает запрос на JSP. Компонент JSP обращается KjavaBeans, используя тег jsp:useBean, и выводит информацию для конечного пользователя.
На рис. 11.9 показана диаграмма последовательностей, изображающая динамику этого сценария.
Ниже приводится фрагмент кода, в котором производится настройка компонента Transactlnfo для использования в ListTransacts.jsp.
// Получение объекта сеанса пользователя
HttpSession session = request.getSession(true);
…
// Получение списка транзакций
…
// Создание компонента для передачи данных на страницу JSP
Transactlnfo transactlnfo = new Transactlnfo(transacts);
session.setAttribute("Transactinfo", transactlnfo);
…
// Передача на следующую страницу JSP
RequestDispatcher dispatcher =
getServletContext() .getRequestDispatcher("/ListTransacts.j sp");
dispatcher.forward(request, response);
Рис. 11.10. Диаграмма последовательностей, описывающая сценарий входа в систему
Резюме
Главная задача компонентов JSP — отделить содержимое от его представления. По своей концепции они очень похожи на сервлеты. Технология JSP напоминает технологию скриптов на стороне сервера; ключевое различие состоит в том, что компоненты JSP компилируются, а скрипты интерпретируются.
Хотя компоненты JSP эквивалентны сервлетам, они не предназначены для замены сервлетов. Фундамент эффективного применения сервлетов и JSP образуют два принципа разработки, обычно называемые моделями 1 и 2.
Компонент JSP состоит из кода Java, внедренного в структурированный документ, такой как HTML или XML. Для разметки определенных частей кода JSP применяются теги. Пользователи могут создавать и собственные библиотеки тегов.
В языке UML компоненты JSP и связанные с ними отношения моделируются существующими конструкциями UML со стереотипами. Компонент JSP моделируется как состоящий из двух воображаемых элементов: страницы клиента и страницы сервера. Отношение между страницей клиента и страницей сервера моделируется как отношение построения. Страницы клиента и сервера также могут иметь отношения с другими страницами клиента и сервера.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.