Страница приветствия Welcome.jsp
Когда пользователь вводит правильный пароль, переключатель.jsp управляет страницей JSP и направляет страницу приветствия Welcome.jsp. В этом разделе мы разрабатываем страницу Welcome.jsp. Поскольку файл Welcome.jsp должен использовать стороннюю библиотеку тегов, вам необходимо выполнить некоторые настройки в JBuilder, чтобы внедрить эту библиотеку тегов, прежде чем разрабатывать файл Welcome.jsp.
Настройте сторонние библиотеки тегов в JBuilder
Организация Apache с открытым исходным кодом предоставляет множество полезных библиотек тегов. Приветственная страница Welcome.jsp должна использовать библиотеку тегов datetime от Apache. Эту библиотеку тегов можно использовать для отображения различного времени в JSP. Адрес загрузки: /u/info_img. /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip.
Библиотека тегов обычно включает в себя два файла: один — JAR-файл пакета классов, а другой — файл описания тега с расширением .tld. После распаковки загруженного сжатого файла мы помещаем файлы taglibs-datetime.jar и taglibs-datetime.tld в каталог <каталог проекта>/datetimeTag.
Чтобы использовать в проекте стороннюю библиотеку тегов, необходимо заранее настроить библиотеку тегов в JBuilder и ссылаться на нее в проекте. Настройка библиотек тегов аналогична настройке библиотек классов и также выполняется через диалоговое окно «Настройка библиотек». Библиотека классов и библиотека тегов JBuilder перечислены в дереве слева в диалоговом окне «Настройка библиотек». Библиотека классов отображается как. значок, а библиотека тегов отображается как икона. Затем мы настраиваем библиотеку тегов datetime в JBuilder.
1. Диалоговое окно «Инструменты->Настройка->Библиотеки->Настроить библиотеки».
Нажмите кнопку «Добавить...» в левом нижнем углу диалогового окна «Настройка библиотек», чтобы открыть диалоговое окно «Мастер создания новой библиотеки», как показано ниже:
Рис. 17. Диалоговое окно мастера создания новой библиотеки. |
Дайте этой библиотеке имя в поле «Имя: datetimeTag» и нажмите «ОК», чтобы вернуться в диалоговое окно «Настройка библиотек».
2. Укажите файл библиотеки тегов.
После возвращения в диалоговое окно «Настройка библиотек» узел datetimeTag появится в дереве слева. Поскольку для него не указан файл библиотеки классов, он отображается заметным красным цветом, в отличие от других узлов. Щелкните datetimeTag и переключите страницу настроек библиотеки. в Framework. На вкладке, как показано ниже:
Рис. 18. Переключение на платформу |
Выберите параметр «Пользовательская библиотека тегов JSP» в раскрывающемся списке «Платформа», нажмите кнопку «Добавить...» в правом нижнем углу страницы вкладки, и появится диалоговое окно «Определить новую библиотеку тегов», как показано на рисунке. ниже:
Рисунок 19. Файл описания, определяющий библиотеку тегов. |
В диалоговом окне «Определить новую библиотеку тегов» нажмите кнопку... после файла TLD и перейдите к файлу <каталог проекта>/datetimeTag/taglibs-datetime.tld. После подтверждения JBuilder автоматически заполняет оставшиеся настройки. нет необходимости изменять эти настройки автоматического пополнения JBuilder. Среди них Prefix указывает ссылочный префикс для этой библиотеки тегов. Нажмите кнопку «ОК», чтобы вернуться в диалоговое окно «Настройка библиотек». Узел datetimeTag отображается в обычном цвете, как показано ниже:
Рисунок 20 Эффект после правильной настройки библиотеки тегов |
Нажмите кнопку «ОК» в диалоговом окне «Настройка библиотек», чтобы завершить настройку библиотеки тегов datetime.
3. Используйте эту вновь настроенную библиотеку тегов в текущем проекте.
Проект->Свойства проекта...->Пути->Переключитесь на вкладку «Необходимые библиотеки»->Нажмите кнопку «Добавить...», чтобы выбрать datetimeTag из библиотеки классов JBuilder. После успешной настройки диалоговое окно «Свойства проекта» выглядит следующим образом:
Рисунок 21. Справочная библиотека проекта. |
Создать страницу приветствия JSP
1. Файл->Создать…->Интернет->Дважды щелкните значок JSP, чтобы запустить мастер создания JSP, укажите имя файла JSP в качестве приветствия и нажмите «Далее», чтобы перейти к следующему шагу.
2. Ссылка на библиотеку тегов datetimeTag на странице Welcome.jsp.
На шаге 2 мастера вам разрешено выбирать различные библиотеки тегов в JBuilder. Библиотека тегов datetimeTag, которую мы настроили в предыдущем разделе, также отображается в списке библиотек тегов, как показано на следующем рисунке.
Рис. 22. Библиотека справочных тегов. |
Разверните тег datetime, проверьте taglibs-datetime и нажмите «Далее», чтобы перейти к следующему шагу.
3. Ссылка на объект userBean, размещенный в домене сеанса в switch.jsp.
Рисунок 23. Ссылка на пользовательский компонент, помещенный в сеанс в switch.jsp. |
Нажмите «Добавить компонент...», чтобы выбрать класс bookstore.User, укажите имя компонента как ses_userBean в столбце ID и выберите область сеанса в столбце «Область». ses_userBean — это имя, указанное для userBean в switch.jsp. Веб-контейнер будет искать объект в сеансе на основе этого имени. Если он не сможет его найти, он создаст объект bookstore.User, поскольку файл Welcome.jsp вызывается после переключения. .jsp. Таким образом, если срок действия сеанса не истек, объект userBean можно найти.
Нажмите «Готово», чтобы создать файл Welcome.jsp. Код выглядит следующим образом:
Листинг кода 15. Приветственная страница Welcome.jsp
1. <%@ page contentType="text/html; charset=GBK" %> 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3. <html> 4. <голова> 5. <название> 6.добро пожаловать 7. </название> 8. </голова> 9. <jsp:useBean id="ses_userBean"scope="session" class="bookstore.User" /> 10. <jsp:setProperty name="ses_userBean" property="*" /> 11. <body bgcolor="#ffffff"> 12. <h1> 13. JSP, сгенерированный JBuilder 14. </ч1> 15. </тело> 16. </html> |
Библиотека тегов, указанная на шаге 2 мастера, устанавливается в соответствии с кодом объявления указанной библиотеки тегов в строке 2. Bean, установленный на шаге 3, соответствует строкам кода с 9 по 10. Поскольку нет необходимости заполнять значение Bean в файле Welcome.jsp, код в строке 10 следует удалить вручную.
Затем мы ссылаемся на библиотеку тегов datetime в файле Welcome.jsp и используем ее для генерации строки формата текущего времени. Откройте файл Welcome.jsp и переключитесь на страницу просмотра исходного кода. Сначала очистите код, сгенерированный JBuilder, в <body></body>, введите «<dt:» в <body></body>. JBuilder будет использовать функцию TagInsight для отображения всех доступных элементов тегов в этой библиотеке тегов, как показано ниже. Как показано на рисунке:
Рис. 24. Использование TagInsight для входа в библиотеку тегов.
TagInsight можно использовать для простого ввода доступных тегов в библиотеку тегов, что значительно ускоряет ввод кода библиотеки тегов и гарантирует корректность. В файле Welcome.jsp мы используем библиотеку тегов для получения текущей форматированной строки времени. Кроме того, мы также получаем имя пользователя через ses_userBean. Окончательный код Welcome.jsp выглядит следующим образом:
Листинг 16. Welcome.jsp ссылается на библиотеку тегов и объект Session.
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%> 3. <html> 4. <голова> 5. <title>добро пожаловать</title> 6. </голова> 7. <jsp:useBean id="ses_userBean"scope="session" class="bookstore.User"/> 8. <body bgcolor="#ffffff">Вы 9. <%=ses_userBean.getUserName()%>, добро пожаловать в систему. <бр> 10. Текущее время:<dt:format шаблон="ММ/дд/гггг чч:мм"><dt:currentTime/></dt:format> 11. <br>Нажмите<a href="quit.jsp">здесь</a>, чтобы выйти из системы. 12. </тело> 13. </html> |
Кроме того, JBuilder скопировал файл описания библиотеки тегов datetime taglibs-datetime.tld в WEB-INF и подделал файл web.xml, чтобы объявить адрес taglibs-datetime.tld:
Листинг 17. Объявление файла описания тега в файле web.xml.
1. <?xml version="1.0" кодировка="UTF-8"?> 2.… 3. <веб-приложение> 4. <taglib> 5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri> 6. <taglib-location>/WEB-INF/taglibs-datetime.tld</taglib-location> 7. </taglib> 8. </веб-приложение> |
Как показано выше, в строках с 4 по 7 файла web.xml JBuilder автоматически добавляет файл описания библиотеки тегов datetime, чтобы веб-контейнер мог правильно найти необходимую информацию.
При компиляции проекта для создания веб-каталога JBuilder скопирует файл JAR taglibs-datetime.jar библиотеки тегов datetime в каталог WEB-INF/lib.
Когда пользователь успешно войдет в систему, он будет перенаправлен на страницу Welcome.jsp. Эффект страницы показан ниже:
Рис. 25. Страница эффекта Welcome.jsp. |
Когда пользователь нажимает ссылку «здесь», она будет связана с quit.jsp. Страница quit.jsp отвечает за очистку сеанса. После очистки сеанса она отвязывает объекты, на которые ссылаются в сеансе, и освобождает ресурсы.
страница обработки выхода quit.jsp
Поскольку протокол HTTP работает по принципу запроса/ответа, когда клиент выходит из системы, ему необходимо активно отправить запрос на веб-сервер, чтобы уведомить веб-сервер о необходимости своевременного уничтожения сеанса. В противном случае веб-сервер будет только ждать. до истечения срока действия сеанса, прежде чем уничтожить его.
Мы используем quit.jsp для обработки выхода пользователя из системы. quit.jsp отвечает за выход из сеанса и своевременное освобождение ресурсов.
·Выход из сеанса.
· Закройте окно браузера.
Код выглядит следующим образом:
1. <%@ page contentType="text/html; charset=GBK" %> 2,<% 3. сеанс.инвалидата(); 4. %> 5. <язык сценариев="javaScript" > 6. window.opener = ноль; 7. окно.закрыть(); 8. </скрипт> |
Строка 3 отвечает за выход из сеанса. Объекты, первоначально помещенные в сеанс, будут отключены и будут ждать сборки мусора для освобождения ресурсов. В этом примере в сеансе имеется объект userBean с именем ses_userBean (он помещается в сеанс в switch.jsp). После вызова session.invalidate() пользовательский компонент отвязывается от сеанса, и его метод valueUnbound() будет отключен. запуститься, а затем дождаться сборки мусора.
Строки с 5 по 8 представляют собой программу-скрипт JavaScript, отвечающую за закрытие окна. Если веб-страница не открывается с помощью программы-скрипта (window.open()), объект window.opener должен быть установлен перед вызовом window.close(). скрипт для закрытия окна имеет значение null, как показано в строке 6, иначе в браузере появится диалоговое окно с подтверждением закрытия. Автор обнаружил, что эта проблема беспокоит многих веб-программистов, поэтому я особо отметил ее.
Практический опыт:
Когда пользователь выходит из системы, необходимо выйти из сеанса, иначе объект сеанса не будет очищен до истечения срока действия сеанса на сервере. Предположим, что максимальное время бездействия сеанса составляет 30 минут (время по умолчанию). Если объекты сеанса не очищаются вручную, системные ресурсы, занятые этими объектами, не будут освобождены до тех пор, пока не пройдет 30 минут после выхода пользователя из системы. |