Вы не можете, когда он не работает в том же ServletContext
или же/кластерным веб-сервер, в котором WebApps настроены поделиться ServletContext
(в случае Tomcat, проверьте crossContext
вариант).
У вас есть, чтобы отправить перенаправление на HttpServletResponse.sendRedirect()
. Если ваш актуальный вопрос повторяет использование параметров запроса в новом URL-адресе, просто отправьте их повторно.
response.sendRedirect(newURL + "?" + request.getQueryString());
Или когда это POST, отправьте HTTP 307 редирект, клиент повторно одни и те же параметры POST запроса на новый URL.
response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
response.setHeader("Location", newURL);
Update согласно комментариям, это явно не вариант, а так как вы хотите, чтобы скрыть URL. В этом случае вы должны позволить сервлету играть за прокси. Вы можете сделать это с помощью HTTP-клиента, например. Java SE предоставил java.net.URLConnection
(mini tutorial here) или более удобный Apache Commons HttpClient.
Если это GET, просто сделать:
InputStream input = new URL(newURL + "?" + request.getQueryString()).openStream();
OutputStream output = response.getOutputStream();
// Copy.
Или если это POST:
URLConnection connection = new URL(newURL).openConnection();
connection.setDoOutput(true);
// Set and/or copy request headers here based on current request?
InputStream input1 = request.getInputStream();
OutputStream output1 = connection.getOutputStream();
// Copy.
InputStream input2 = connection.getInputStream();
OutputStream output2 = response.getOutputStream();
// Copy.
Обратите внимание, что вам, возможно, нужно захватить/заменить/обновить относительные ссылки в ответ на HTML, если Любые. Jsoup может быть очень полезным в этом.
ОК.Что делать, если я не хочу показывать целевой URL конечным пользователям? Ничего похожего на URL-адрес App Engine? http://code.google.com/appengine/docs/python/urlfetch/overview.html – bjornl
Затем вам нужно разрешить сервлет действовать как прокси-сервер, используя HTTP-клиент. – BalusC
Спасибо! Будет проверять HTTP-клиент Apache http://hc.apache.org/httpclient-3.x/ – bjornl