Как я могу передать локальные переменные между doGet и методом doPost в Servlet? - PullRequest
0 голосов
/ 18 марта 2012

Я понимаю, что для написания поточно-безопасных сервлетов одной из самых простых вещей является объявление всех переменных локально.

Когда моя программа вызывает doPost, она создает экземпляр базы данных, который называется db.Я хочу передать этот экземпляр в метод doGet, но безопасно, без необходимости объявлять db глобально.Есть ли способ, которым я могу это сделать?

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Как вы, вероятно, знаете, doGet () и doPost () вызываются в разных ситуациях (когда браузер или HTTP-клиент выполняет HTTP-запрос GET или POST, соответственно).

Похоже, ваше приложение имеетфункциональность общего между этими двумя запросами.Я рекомендую вам абстрагировать эту совместно используемую функциональность в другой метод (или методы) вашего сервлета, который могут вызывать как doGet (), так и doPost ().

В качестве альтернативы, если все функциональные возможности являются общимивместо этого можно реализовать метод service (), который контейнер сервлета будет вызывать для всех типов запросов (вместо doGet () или doPost ()).

1 голос
/ 18 марта 2012

Я бы порекомендовал вам использовать переменную класса, которая ссылается на объект DataSource, из которого вы можете получить новое свежее соединение с вашей базой данных в ваших методах doGet или doPost.Это безопасный для протектора способ.

Но для лучшей управляемости вашего кода вы должны прочитать о JPA

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