Если в Vaadin 8 у вас есть простая иерархия области действия на трех уровнях.
- ServletContext
Представляет всю вашу сеть Vaadin приложение.
VaadinSession
Представляет каждого пользователя рабочая сессия.
UI
Представляет каждый веб-браузер / вкладку в сеансе (Vaadin поддерживает многооконные приложения, что довольно удивительно).
Первый является стандартной частью каждого сервлета Java, определенного в спецификации.
Второй - это оболочка для сеанса, также определенная в спецификации Java Servlet.
На самом деле Vaadin - это один огромный сервлет, поэтому он несет в себе функции контекста и сеанса.
Класс UI
уникален для Vaadin. Он представляет собой содержимое окна / вкладки веб-браузера. Vaadin поддерживает многооконные приложения, отслеживая все открытые окна / вкладки как часть сеанса, что является очень приятной особенностью Vaadin.
Для хранения общегосударственного приложения используйте стандартный объект ServletContext
. Он содержит коллекцию «ключ-значение», известную как «атрибуты». Ключ имеет тип String
, а значение имеет значение _ 6_. Вызов методов setAttribute
, getAttribute
и removeAttribute
. Используйте эту коллекцию для любых объектов, к которым вам может потребоваться доступ для любого из ваших пользователей, во время их сеансов. Кстати, вы можете узнать о ServletContextListener
, чтобы подключиться к запуску и выходу вашего веб-приложения.
Класс VaadinSession
содержит такую же коллекцию "ключ-значение" с аналогичными "атрибутивными" методами. Используйте это для отслеживания элементов на протяжении всего сеанса работы пользователя, при этом они могут открывать / закрывать несколько окон / вкладок вашего приложения. Например, в сеансе вы сохраните выбор пользователя Spirit Animal, его изображение аватара и тот факт, что этот человек был аутентифицирован с помощью учетных данных имени пользователя и пароля. См. Эту страницу в руководстве, Настройка и чтение атрибутов сеанса em >.
Если вы хотите сохранить настройки для каждого окна, например, их выбор цвета фона или светлый / темный режим, сохраните что-нибудь на UI
. К сожалению, этот класс не имеет удобного хранилища ключей и значений, о котором я знаю. Поэтому вам нужно добавить свои собственные Map
или некоторые другие переменные-члены в ваш UI
подкласс.
Для получения дополнительной информации см. мой ответ на аналогичный вопрос. Я сделал там отличные диаграммы. Этот вопрос касается Vaadin 7, но, насколько я смутно припоминаю, эти концепции переносятся между 7 и 8.
Что касается VaadinService
и _ 16_, я никогда точно не понимал их роль. Кажется, что они представляют различные аспекты всей вашей сети Vaadin во время выполнения. Но ни один из них не имеет удобной коллекции ключей и значений, как VaadinSession
. (Если вы используете Vaadin Flow версий 10+, см. VaadinContext
, класс, который представляет все ваше веб-приложение и содержит удобную коллекцию «атрибутов» «ключ-значение».)
person
Basil Bourque
schedule
27.08.2019
VaadinSession
это то, что вам нужно. Соответствует одному пользователю. С каждымVaadinSession
может быть связано несколькоUI
(например, несколько вкладок браузера). - person Steffen Harbich   schedule 09.01.2018