好吧,我只使用response.sendRedirect並轉發使用購買的servlet,但現在我需要一個servlet請求答案,而不是將客戶端發送到另一個servlet。servlet如何從其他servlet請求數據?
我該怎麼做?
讓我舉個例子:想象一下,一個servlet可以給你一個頁面的時間和溫度。
INT這個servletü會需要從2個diferent servlet的請求數據,所以你需要什麼即時通訊,詢問在這裏...
好吧,我只使用response.sendRedirect並轉發使用購買的servlet,但現在我需要一個servlet請求答案,而不是將客戶端發送到另一個servlet。servlet如何從其他servlet請求數據?
我該怎麼做?
讓我舉個例子:想象一下,一個servlet可以給你一個頁面的時間和溫度。
INT這個servletü會需要從2個diferent servlet的請求數據,所以你需要什麼即時通訊,詢問在這裏...
如果這兩個servlet在同一個服務器上的相同上下文中運行,那麼只需使用RequestDispatcher#include()
。
request.getRequestDispatcher("/otherservleturl").include(request, response);
你甚至可以做到這一點,其中被轉發由第一servlet的JSP。
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
與
<jsp:include page="/otherservleturl" />
如果他們沒有在同一個環境中運行,那麼你就需要以編程方式觸發一個HTTP請求,它和它的管道HTTP響應輸出到當前響應輸出。
InputStream input = new URL("http://other.com/servlet").openStream();
OutputStream output = response.getOutputStream();
IOUtils.copy(input, output);
對於更高級的HTTP請求,請檢查this mini-tutorial。
忽略,你正在做的請求從一個servlet的事實 - 它只是普通的Java代碼。
忽略你提出請求到這個事實,它只是一個普通的HTTP請求。
使用你通常用來處理HTTP的任何東西 - 例如Apache HttpClient,或內置URLConnection
類。獲取數據,將其與任何其他數據結合起來,作爲響應。