Выбор выпадающего в сеансе - PullRequest
0 голосов
/ 21 июня 2011

Добрый день!

Я модифицирую некоторые коды из существующей программы.Перед началом программы они инициализируют весь раскрывающийся список и сохраняют его в сеансе.

Можно ли сохранить список моего раскрывающегося меню в сеансе?Примечание: список взят из базы данных.

SAMPLE CODE:

           HttpSession session = request.getSession();

        session.setAttribute("accountList", accountList);
        session.setAttribute("contractorAgencyList", contractorAgencyList);
        session.setAttribute("employeeStatusList", employeeStatusList);
        session.setAttribute("movementTypeList", movementTypeList);
        session.setAttribute("positionLevelList", positionLevelList);
        session.setAttribute("positionRoleList", positionRoleList);
        session.setAttribute("practiceCodeList", practiceCodeList);
        session.setAttribute("projectUtilizationList", projectUtilizationList);
        session.setAttribute("siteLocationList", siteLocationList);
        session.setAttribute("taxStatusList",taxStatusList);
        session.setAttribute("turnoverTypeList",turnoverTypeList);
        session.setAttribute("projectList",projectList);

Есть ли другие способы сделать это?Если это самый распространенный способ сделать это, то как мы можем избежать потери сеанса?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Есть ли другие способы сделать это?

Да, но это будет зависеть от того, как долго вы хотите, чтобы значения хранились. В контейнере сервлетов у вас обычно есть доступ к области приложения, области сеанса, области запроса и области страницы. К первым трем можно получить доступ как в сервлетах, так и в JSP, а последний полезен только в контексте JSP.

Если содержимое меню можно повторно использовать в разных сеансах, лучше хранить их в объектах области приложения через интерфейс ServletContext .

Если вам не нужны данные меню помимо текущего запроса, то вы должны сделать это областью запроса, а не областью сеанса.

Если область действия раскрывающегося меню ограничена сеансом, то лучше хранить его в сеансе, если объект не занимает много места. Имейте в виду, что размер объектов, хранящихся в памяти, будет влиять на производительность сайта, особенно при наличии стратегии кластеризации и репликации сеансов - это главным образом потому, что содержимое сеанса должно быть сериализовано и сохранено для возможности создания другого сеанса при отработке отказа.

Кроме того, на производительность будет влиять даже то, что вы не используете стратегию кластеризации и миграции сеансов, поскольку каждый сеанс будет использовать память, которая будет освобождена только при следующем цикле GC после аннулирования сеанса.

Если вы хотите избежать использования сеансов для хранения объектов в области сеансов, вы можете запрашивать данные из базы данных по мере необходимости. Или даже храните содержимое в файлах (если они не являются конфиденциальными / конфиденциальными данными), что может сделать вашу стратегию переноса сеанса немного более болезненной.

Если это самый распространенный способ сделать это, то как мы можем избежать потери сеанса?

Я не понял эту часть вопроса. В любом случае сеансы управляются контейнером от имени разработчика приложения. Самое большее, разработчик может указать значения тайм-аута сеанса, которые будут определять экстент скользящего окна для истечения сеанса. Разработчик также может лишить законной силы сеанс в какой-то важный момент в процессе навигации приложения - например, по нажатию кнопки выхода из системы. Разработчику, как правило, не нужно беспокоиться об управлении сеансами, помимо того, что необходимо сделать с помощью HttpSession API или записей в дескрипторах развертывания.

1 голос
/ 21 июня 2011

Вы можете хранить в сеансе, но какова цель?данные относятся только к пользователю сеанса?Если это так, вы можете хранить.Если эти значения являются общими для всех пользователей, вы можете использовать приложение вместо сессий.

Преимущество заключается в том, что использование сессий (если данные зависят от пользователя) заключается в том, что оно быстро сравнивается с выборкой базы данных, недостатком является памятьбудет выделяться на сервере для каждого пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...