2011-11-01 79 views
5

我想從一個servlet重定向JSP頁面。 所有的JSP頁面都在Web Content之下。不是under Web-INF。 我有一個調用該JSP頁面的問題。我得到了404錯誤。問題與路徑。從servlet重定向jsp RequestDispatcher

如何在Web內容下調用jsp頁面?

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

謝謝你。

問題已解決!

+2

我解決了它使用像這樣RequestDispatcher requestDispatcher; \t \t \t \t requestDispatcher = request.getRequestDispatcher(「/ thankYou.jsp」); \t \t \t \t requestDispatcher.forward(request,response); – kitokid

回答

13

我解決了使用RequestDispatcher這樣的問題:

RequestDispatcher requestDispatcher; 
requestDispatcher = request.getRequestDispatcher("/thankYou.jsp"); 
requestDispatcher.forward(request, response); 
7

稍微清潔劑來寫這段代碼的辦法是:

request.getRequestDispatcher("/thankyou.jsp").forward(request, response); 
0

使用SendDirect如果你想與JSP頁面的工作

response.sendRedirect("/thankyou.jsp"); 

這是比使用RequestDispatc更簡單的東西她不與doPost()一起工作。

+0

當然它不會 - POST請求不會被髮送回「客戶端」的「視覺輸出」。但是您不會重定向到JSP,而是重定向到爲Servlet映射的路徑(因此該站點是由客戶端通過GET再次請求的)。 – UniversE

+0

通過請求調度程序,我們可以將請求和響應對象從中間頁面轉發到下一頁,這是不可能的。 –

0

使用響應對象使用'sendRedirect()'方法的更好方法。

您可以編寫

response.sendRedirect("./newpage.jsp"); 

這將發送控制你的'newpage.jsp頁面。

+0

不,這是最終的錯誤方式。這會向客戶端發送HTTP 302,並將其重定向到JSP頁面,這使得Servlet非常無用。如果您將jsp放入「WEB-INF/view」目錄中,例如無論如何它都無法工作。 – UniversE

0

當您將您的請求轉發到的jsp的java scriptlet中有錯誤時,會發生此錯誤。
例如,我打電話給<%request.getAttribute(「user」); %> 而問題解決了,當我使用<%request.getParameter(「user」)%>