2013-04-10 62 views
0

我有一個使用HttpURLConnection連接到servlet的Java應用程序。應用程序將它想要傳遞給servlet的參數嵌入到url中,同時連接到它。這樣servlet就可以使用它的doGet()來訪問和處理這些參數。我通過這部分(我可以訪問參數並在servlet中顯示它們)。Servlet的RequestDispatcher.forward()方法不起作用

接下來我想要做的就是將這些參數從servlet傳遞到JSP。我使用request.setAttribute()來做到這一點。但即使在RequestDispatcherObj.forward(request, response)之後,JSP也不會打開。我甚至試過response.sendRedirect(url)

但是,如果我獨立運行servlet,上述方法(forward()和sendRedirect())都可以正常工作,並打開JSP頁面。

我想知道我做錯了什麼。

在此先感謝您的幫助。

CODE:

Java應用程序

serverAddress = new URL("http://localhost:8080/WebApp/ServletPath"+"?message1"+"="+message); 
(HttpURLConnection)serverAddress.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Accept-Charset", charset); 
connection.setReadTimeout(10000); 
connection.connect(); 

的Servlet

message = request.getParameter("message1");//working 
request.setAttribute("message1", message);//to be read in the jsp 
url="/index.jsp"; 
RequestDispatcher dispatcher=getServletContext().getRequestDispatcher(url); 
dispatcher.forward(request, response);//Works when servlet is run independently but not when the servlet is called from the App 

}

+0

某些代碼會更清晰... – 2013-04-10 03:50:14

+0

運行Java應用程序時,您會發生什麼? 「當servlet獨立運行時」是什麼意思?您不希望應用程序向servlet發送請求時瀏覽器顯示JSP,是嗎? – 2013-04-10 05:53:59

+0

是的,我實際上期待着發生。 – CCGooner 2013-04-10 05:56:14

回答

0

HttpURLConnection不是用來改變什麼瀏覽器連接到並顯示。它用於在Java應用程序本身中創建HTTP連接。

當一個Java程序連接到一個URL並讀取響應時,瀏覽器不知道它,並且不會神奇地顯示任何東西。通過連接到Java應用程序中的URL,您可以執行與瀏覽器相同的操作,但可以在自己的程序中執行。所以你可能會從連接中讀取響應,並顯示webapp發送的內容。

+0

非常感謝您的澄清。 是否有任何其他方式可以執行以下操作: a)從我的Java應用程序中,將某些參數傳遞給一個servlet。 b)在servlet中處理參數並將處理後的項目發送給在Web瀏覽器中打開的jsp。 – CCGooner 2013-04-10 08:29:10

+0

使用硒。它允許通過Java API「驅動」瀏覽器。 – 2013-04-10 11:57:56

+0

謝謝。有效。 :d – CCGooner 2013-04-10 21:04:16