На рис. 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).
Ссылка на скачивание - внизу страницы.