#java #servlets
#java #сервлеты
Вопрос:
Как получить информацию, которая хранится в сеансе сервлета, из обычного класса Java..
Комментарии:
1. Вызов общедоступных методов класса java.
2. Что здесь подразумевается под нормальным? Не является ли этот класс частью того же веб-приложения, что и сервлет?
3. он находится в том же веб-приложении
4. Я думаю, что обычный класс Java означает класс, который не расширяет класс Httpservlet или не реализует какой-либо интерфейс сервлета. У меня такая же проблема @saury ,
Ответ №1:
Как и в случае с любым другим классом: передавая его в качестве аргумента конструктора или метода:
MyJavaClass c1 = new MyJavaClass(session.getAttribute("foo"));
MyOtherJavaClass c2 = new MyOtherJavaClass();
c2.doSomethingWithSession(session);
Ответ №2:
Обычно я бы передавал информацию из сервлета в класс: сервлет инициирует требуемые действия, передавая любую информацию, необходимую для выполнения этих действий.
Я бы постарался максимально изолировать другие классы от любых знаний о сервлетах и сеансах — сервлет должен знать о своих сотрудниках, а не наоборот.
(Если это не помогает в вашей конкретной ситуации, пожалуйста, расскажите нам подробнее о том, что вы пытаетесь сделать.)
Комментарии:
1. на самом деле у меня есть значение, которое сохраняется в сеансе при входе в приложение. я хочу получить это значение сеанса в классе Java того же приложения
2. @pmad: Извините, честно говоря, не совсем понятно, что вы имеете в виду.
3. : На самом деле моему приложению необходимо подключаться к разным базам данных на основе одного параметра, т.е. Имени учетной записи. У меня есть этот параметр в сеансе. Но как я могу получить этот параметр в обычных классах Java.
4. @pmad: Как я уже сказал: вы передаете ее из сервлета. Предположительно, вы выполняете какое-то действие в ответ на запрос, верно? Итак, ваш код сервлета вызывает ваш код, отличный от сервлета, поэтому передайте значения в этот момент.
Ответ №3:
HttpSession objHttpSession=request.getSession().getAttribute(@argument@);