Nano Hash - криптовалюты, майнинг, программирование

Получение текущего объекта сеанса в Java

Могу ли я получить доступ к объекту сеанса из функции, где объект запроса отсутствует?

Я знаю, что в Java мы получаем доступ к сеансу следующим образом:

HttpSession session = request.getSession(true);

Но что, если мы хотим получить доступ к сеансу, когда объект запроса отсутствует?

Является ли это возможным? есть ли альтернативный способ получить объект сеанса?

Редактировать

у меня есть сервлет

public class ABC extends HttpServlet
{
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
    {
             ..........
             ...........
        myFun1(x,y,z);  
    }

      private void myFun1(int x, int y,long z)
      {
            .........
            myFun2(a,b);    
       }

      private void myFun2(int a,String b)
      {
            .........

            //      Need Session here
       }

}
30.07.2010

  • Если у вас нет конкретного запроса, как вы узнаете, какую сессию получить? В процессе может быть несколько живых сессий. 30.07.2010
  • Спасибо, я передам объект запроса функциям в качестве дополнительного параметра. 30.07.2010

Ответы:


1

Это зависит от того, что вы подразумеваете под «когда объект запроса отсутствует». У вас может быть локальная переменная потока, которая устанавливает "текущий запрос для этого потока" в начале сервлета или что-то еще, что вы запускаете (вы не дали понять). Затем вы можете получить «текущий запрос в этом потоке» из любого места и таким образом получить сеанс. (Или в том же духе вы можете установить текущий сеанс вместо текущего запроса в локальной переменной потока.)

Однако это не очень красиво, и у вас будут проблемы, если вы захотите сделать что-то в другом потоке. Передача запроса или сеанса в качестве зависимости, как правило, чище.

30.07.2010

2

Вообще говоря, если вы хотите получить доступ к сеансу http из места, где объект запроса недоступен, у вас могут возникнуть проблемы с дизайном в вашем приложении, и вам нужно переосмыслить проблемы, слои и т. д.

30.07.2010

3

Если вы реализуете технологию JSF в своем приложении, вы можете получить доступ ко всему, вызвав;

FacesContext.getCurrentInstance();

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

Тем не менее, реализация JSF, вероятно, несколько избыточна только для этой цели, поскольку вам, вероятно, придется внести много изменений в вашу конфигурацию и уровни представления, чтобы приспособиться к ней.

Тем не менее, если вы решите пойти по этому пути, вы также можете подумать об использовании MyFaces, который фантастический API для тех, кто использует JSF в своих приложениях.

30.07.2010
  • Он не возвращает синглтон. Он возвращает локальную ссылку потока. 30.07.2010
  • Спасибо, Балус, я пытался упростить, но ты совершенно прав. 11.08.2010

  • 4

    передача объекта запроса является решением,

    public class ABC extends HttpServlet
    {
        public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
        {
                 ..........
                 ...........
            myFun1(x,y,z,req);  
        }
    
          private void myFun1(int x, int y,long z,HttpServletRequest req)
          {
                .........
                myFun2(a,b,req);    
           }
    
          private void myFun2(int a,String b,HttpServletRequest req)
          {
                .........
    
                //      Need Session here
           }
    
    }
    
    30.07.2010

    5

    Нам нужно настроить один слушатель типа HttpSessionListener, его метод будет вызываться во время создания сеанса и во время отвлечения внимания. Если вы используете это, подготовив объект этого класса, вы можете просто получить объект Session...

    28.01.2013
  • Я хихикаю, когда отвлекаюсь. 28.07.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..