Servlet的RequestDispatcher.forward()方法不起作用

时间:2013-04-10 03:20:23

标签: servlets java-ee-6 requestdispatcher

我有一个Java应用程序,它使用HttpURLConnection连接到servlet。应用程序在连接到url时将其想要传递的参数嵌入到servlet中。因此,servlet可以使用其doGet()访问和处理这些参数。我完成了这一部分(我可以访问参数并在servlet中显示它们)。

接下来我要做的是将这些参数从servlet传递给JSP。我正在使用request.setAttribute()来执行此操作。但即使在RequestDispatcherObj.forward(request, response)之后,JSP也无法打开。我甚至试过response.sendRedirect(url)

但是,如果我独立运行servlet,上述方法(forward()和sendRedirect())都可以正常工作,并打开JSP页面。

我想知道我做错了什么。

提前感谢您的帮助。

CODE:

Java App

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

}

1 个答案:

答案 0 :(得分:0)

HttpURLConnection不用于更改浏览器连接和显示的内容。它用于在Java应用程序本身中创建HTTP连接。

当Java程序连接到URL并读取响应时,浏览器不知道它,并且不会神奇地显示任何内容。通过连接到Java应用程序中的URL,您可以执行与浏览器相同的操作,但是在您自己的程序中。因此,您可以从连接中读取响应,并显示Webapp发送的内容。