Вызов сообщения сервлета из другого сервлета

Мне нужно вызвать метод servlets POST из другого сервлета и передать blob в параметрах сервлетов. Возможно ли это, если да, то как это можно сделать. PS: Я не могу использовать Apache HttpClient

3 ответов


вам нужно создать и отправить HTTP-запрос самостоятельно. Вы не можете использовать forward / redirect/include, потому что вы хотите изменить метод с GET на POST и хотите отправить multipart/form-data запрос.

как HttpClient (и другая сторонняя библиотека?) по-видимому, это не вариант, лучше всего использовать стандартный API Java SE при условии java.net.URLConnection. Короче говоря:использование java.сеть.URLConnection для запуска и обработки HTTP-запросов внизу вы можно найти multipart/form-data пример.

обратите внимание,что эта проблема не относится к сервлетам. Другими словами, вы должны иметь возможность выполнить этот код в простом приложении vanilla Java с main() метод. Это позволит упростить тестирование и наладку. Как только вы заставите его работать, просто позвольте сервлету выполнить тот же фрагмент кода.


связаны к проблеме, у меня сложилось впечатление, что где-то есть серьезный сбой дизайна, Конечно, если оба сервлета выполняются в одном контексте webapplication. Другой сервлет, где вы хотите, чтобы отправить POST-запрос, это, видимо, слишком туго связаны, и должен быть переработан.


вы можете получить диспетчера на другой сервлет в своем приложении и переслать его или включить его, как предлагает @Ryan. Код должен быть примерно таким внутри вашего первого сервлета:

ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");

// change your request and response accordingly

dispatcher.forward(request, response);

вы имеете в виду вызов из вашего приложения в другую веб-службу? Если да, то что-то вроде С помощью HttpClient это то, что вы хотите. Если вы хотите программно вызвать другой сервлет в своем приложении, то вы хотите либо это или включить.