2013-07-08 14 views
1

我使用getServletContext().getRequestDispatcher("/message.jsp").forward(request, response);從servlet轉發到jsp,但這在服務器中不起作用。我使用response.sendRedirect(request.getContextPath() + "/message.jsp");,但後來jsp沒有顯示我從servlet發送的消息。如何解決它?該URL在localhost中可用,但不在服務器中

+0

爲什麼'getServletContext()。getRequestDispatcher()'而不是'request.getRequestDispatcher()'? –

回答

0

如果您執行sendRedirect而不是轉發,您將創建一個新的請求,這將導致您的請求屬性消失。有些框架使用'flash'作用域(基本上是請求的2倍)而不是請求或會話作用域來處理這個問題。但是,對於您的情況,由於您使用簡單的Servlet/JSP,因此不存在Flash範圍。

相反,你可以這樣做:

ServletContext context = getServletContext().getContext(request.getContextPath()); 
RequestDispatcher dispatcher = context.getRequestDispatcher("/message.jsp"); 
dispatcher.forward(request, response); 

哪個應該進當前請求message.jsp。

0

您可以通過這種方式

request.setAttribute("PARAM1", "VALUE1"); 
RequestDispatcher dispatcher = request.getRequestDispatcher("message.jsp"); 
dispatcher.forward(request, response); 

,並在您Message.jsp檢索您的設定值做。

request.getAttribute("PARAM1"); 
相關問題