2016-11-28 22 views
0

Я использую Struts 1.2, и мне нужно разъяснение о классе Action.Как объект класса Action доступен даже после завершения сеанса?

Мой класс Действие имеет экземпляр переменной счетчик и блок Instance Initialization с СОП заявление, которое будет печататься измененное значение подсчета (увеличивается на 1). Затем я настроил этот класс Action для экрана в своем приложении. Теперь, когда я попаду на этот экран, мой класс Action будет выполнен.

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

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

Итак, я думаю, что объект класса Action не связан с сеансом, а если нет, то где он хранится, так что даже после того, как сеанс становится недействительным. Объект класса действия доступен?

Пример кода класса Действие: -

public class SampleAction extends DispatchAction { 
    private int count; 

    { 
     System.out.println(++count + " object(s) created"); 
    } 
    /* other methods */ 
} 
+0

где ваши протестированные коды? отправьте им свой вопрос. – Sachith

ответ

1

Я думаю, что объект класса Действие не связано с сеансом, и если она нет, то где он становится хранится так, что даже после сессии получает недействительный Объект класса действия доступен?

Да, ActionServlet и Action объекты класса создаются и поддерживаются контейнером сервлетов, и они являются одноэлементные объекты (по умолчанию), то есть, только один экземпляр этих классов сохраняются в течение всего веб-приложения, в отличие от ваших FormBean объектов ,

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

Кроме того, обратите внимание, что Action объектов класса полностью отличаются от FormBean объектов класса (как ProductFormBean, EmployeeFormBean и т.д ...), то есть, FormBean объектов привязаны к каждой странице JSP, и они будут экземплярами (один объект будет создан) и заполняется (с данными полей JSP), когда запрос поступает от пользователя.

+0

Является ли контейнер сервлетов и объект контекста сервлета одинаковым, если хранить данные в контексте сервлета, он будет доступен для всех пользователей (применение мудрых) - они одинаковы? –

+0

Контейнер сервлетов - это сервер (например, Tomcat, Weblogic, Jetty и т. Д.), Который создал и управляет объектами ServletContext и всех «Servlet» – developer

+0

спасибо ** @ javaguy ** –

 Смежные вопросы

  • Нет связанных вопросов^_^