Журнал LinuxFormat - перейти на главную

LXF91:Java EE

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Процесс передачи информации)
(Процесс передачи информации)
Строка 24: Строка 24:
 
Следует, однако, иметь в виду, что отследить момент, когда пользователь перестает работать с приложением, не всегда возможно. Поэтому в настройках сервера устанавливается некоторое предельное время существования объекта {{oncolor||red|HttpSession}} после получения последнего запроса.
 
Следует, однако, иметь в виду, что отследить момент, когда пользователь перестает работать с приложением, не всегда возможно. Поэтому в настройках сервера устанавливается некоторое предельное время существования объекта {{oncolor||red|HttpSession}} после получения последнего запроса.
  
[[Изображение:LXF92_javaee1.png|Рис. 1]]
+
[[Изображение:LXF91_javaee1.png|Рис. 1]]
  
 
'''Время жизни объектов ''HttpServletRequest'' и ''HttpSession'''''
 
'''Время жизни объектов ''HttpServletRequest'' и ''HttpSession'''''

Версия 09:12, 28 ноября 2008

ЧАСТЬ 3 Каждый линусоид знает, что система уровня предприятия должна обеспечивать разграничение доступа. Антон Черноусов расскажет, что может предложить здесь Java EE.

Содержание

В прошлый раз вы, под чутки руководством Александра, разобрались с JSP и переписали "Телефонную книгу" с учетом этой технологии. Сегодня мы двинемся дальше и поговорим об авторизации, сессиях, фильтрах и использовании разделяемых объектов в web-приложениях.

Процесс передачи информации

Давайте рассмотрим стандартную ситуацию: пользователь вызывает различные страницы одного web-приложения. Если бы этот "диалог" происходил по телефону, он был бы примерно таким:

  • Пользователь (набирает номер): Алло, это приложение?
  • Приложение: Да, это приложение.
  • (Пользователь кладет трубку)
  • Пользователь (набирает номер): Меня зовут Георг.
  • Приложение: Да, Георг, мы вас внимательно слушаем.
  • (Пользователь кладет трубку)
  • Пользователь (набирает номер): Дайте мне, пожалуйста, всю информацию.
  • Приложение: Возьмите...

Отметим, что после каждого обмена репликами пользователь кладет трубку, разрывая соединение - именно таким образом в большинстве случаев и происходит обмен данными между браузером пользователя и сервером, на котором работает web-приложение. Возникает резонный вопрос: как передавать информацию между соединениями, открываемые в рамках одной сессии? Для этого могут использоваться самые различные методы:

  • перезапись URL;
  • скрытые поля;
  • cookie;
  • сессионный объект.

Из всех представленных методов наиболее простым и в тоже время можным является сессионный объект (Session), реализованный в Java посредством интерфейса javax.servlet.http.Session. Ранее, чтобы получить данные от пользователя или обеспечить возможность их транспортировки внутри приложения, мы использовали объект типа HttpServletRequest. Основное отличие HttpSession заключается во времени жизни, схематично изображенном на Рис.1. Объект типа HttpServletRequest предназначен для передачи запроса (и необходимых данных) от браузера к web-приложению и существует только между запросом и ответом, в то время как объект HttpSession обеспечивает средства для хранения и доступа к данным пользователя на протяжениии всего периода работы с приложением. )(Рис.1) Время жизни объектов HttpServletRequest и HttpSession. Следует, однако, иметь в виду, что отследить момент, когда пользователь перестает работать с приложением, не всегда возможно. Поэтому в настройках сервера устанавливается некоторое предельное время существования объекта HttpSession после получения последнего запроса.

Рис. 1

Время жизни объектов HttpServletRequest и HttpSession

Сессия

Объект session в JSP является предопределеным, то есть с ним можно сразу же начинать работать. Чтобы создать сессионный объект в сервлете, воспользуемся следующим методом:

Персональные инструменты
купить
подписаться
Яндекс.Метрика