| Цитата | Вызов сервлетов из сервлетов Для того, чтобы один сервлет мог вызывать другой, вам необходимо или: Чтобы сервлет мог выполнять HTTP запросы другого сервлета. (Открытие соединения с URL описано в уроке «Работа с URL» данного руководства,) или Чтобы сервлет мог напрямую вызывать public-методы другого сервлета в случае, если оба сервлета работают на одном сервере. Данный раздел относится ко второму пункту условия. Для того чтобы напрямую вызвать public-методы другого сервлета необходимо: Знать имя вызываемого сервлета Получить доступ к объекту Servlet сервлета Вызвать public-метод сервлета
Чтобы получить доступ к объекту Servlet, используйте метод getServlet объекта ServletContext. Получите объект ServletContext из объекта ServletConfig, который хранится в объекте Servlet. Данный пример позволит вам это сделать. Когда сервлет BookDetail вызывает сервлет BookDB, сервлет BookDetail получает объект Servlet сервлета BookDB таким образом:
public class BookDetailServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... BookDBServlet database = (BookDBServlet) getServletConfig().getServletContext().getServlet("bookdb"); ... } }
Если у вас есть объект servlet, вы можете вызвать любой из public-методов сервлета. Например, сервлет BookDetail вызывает метод getBookDetails сервлета BookDB: public class BookDetailServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... BookDBServlet database = (BookDBServlet) getServletConfig().getServletContext().getServlet("bookdb"); BookDetails bd = database.getBookDetails(bookId); ... } } Будьте осторожными при вызове других методов сервлета. Если сервлет, к которому вы хотите обратиться, реализует интерфейс SingleThreadModel, ваш вызов сервлета может нарушить его однопотоковую природу (у сервера нет возможности вмешаться и гарантировать то, что вы вызываете сервлет не в тот момент, когда он взаимодействует с другим клиентом). В этом случае вместо того, чтобы напрямую вызывать методы другого сервлета, необходимо сделать HTTP запрос. |
Прошу прощения за качество, это из ПДФки. Добавлено @ 16:22 А я сам использовал первый метод - отправлял POSTом урл и читал присылаемый сервлетом объект.
--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ
|