2013-04-10 96 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