2011-04-01 69 views
0

好吧,我只使用response.sendRedirect並轉發使用購買的servlet,但現在我需要一個servlet請求答案,而不是將客戶端發送到另一個servlet。servlet如何從其他servlet請求數據?

我該怎麼做?

讓我舉個例子:想象一下,一個servlet可以給你一個頁面的時間和溫度。

INT這個servletü會需要從2個diferent servlet的請求數據,所以你需要什麼即時通訊,詢問在這裏...

回答

3

如果這兩個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

1

忽略,你正在做的請求一個servlet的事實 - 它只是普通的Java代碼。

忽略你提出請求這個事實,它只是一個普通的HTTP請求。

使用你通常用來處理HTTP的任何東西 - 例如Apache HttpClient,或內置URLConnection類。獲取數據,將其與任何其他數據結合起來,作爲響應。