Вызов сообщения сервлета из другого сервлета
Мне нужно вызвать метод 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 это то, что вы хотите. Если вы хотите программно вызвать другой сервлет в своем приложении, то вы хотите либо это или включить.