Как получить доступ к объекту, который был создан в одном сервлете из другого сервлета - PullRequest
1 голос
/ 11 марта 2011

У меня проблема.Допустим, есть 2 сервлета: Load () и Process ().Во время Load () я хочу создать и инициализировать некоторые объекты.и во время Process () я хочу использовать эти объекты для некоторых других целей.

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

Итак, как я могу создать объект во время одного вызова сервлета и использовать / обращаться к этому объекту из другого сервлета?

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Используйте ServletContext: getServletContext().setAttribute(..)

Кроме того, рассмотрите возможность размещения кода инициализации и кода обработки в одном сервлете. Если у вас есть только init() в одном из них и doGet() в другом, и эти объекты должны быть разделены только между этими двумя сервлетами, нет смысла в этом разделении.

Обновление: , если вы хотите повторно использовать объекты в последовательных запросах одного и того же пользователя (т.е. не инициализировать их один раз и использовать их везде), чем вместо помещения их в ServletContext, поместите их в меньшая область - HttpSession (получено request.getSession())

0 голосов
/ 11 марта 2011

Не уверен, что я понимаю, что вы имеете в виду под Load () и Process (). Сервлеты не являются функциями. Они сопоставляются с определенным URL-адресом, и их функция service () вызывается контейнером сервлета. Несколько URL-адресов могут быть сопоставлены с URL-адресом, и они вызываются в порядке, определенном в файле web.xml.

Чтобы ответить на ваш вопрос: состояние обычно хранится в объекте Session с помощью setAttribute ()

Вы можете получить к нему доступ в другом сервлете через getAttribute ().

...