2011-04-04 77 views
8

如何在servlet的doPost()方法中指定重定向到另一個servlet。發送重定向到另一個servlet/JSP而不失去請求參數。

目前我使用

request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response); 

這是錯誤的,因爲,我在產品的doGet()方法的參數沒有被調用和初始化。

所以我留下了一個空的產品頁面登錄後:/

回答

15

您需要使用HttpServletResponse#sendRedirect()發送重定向。假設了一個Servlet映射在/products的URL模式:

response.sendRedirect("/products"); 

這樣的web瀏覽器將指示火在給定的URL的新HTTP GET請求,因此servlet實例的doGet()方法將被調用您可以在其中加載產品並轉發到以常用方式顯示它們的JSP。

+0

如果我正在設置屬性 request.setAttribute(「test」,new String(「ABC」)); 我如何在其他servlet中訪問它。 – user478636 2011-04-04 14:07:08

+0

取決於功能要求。如果它是登錄用戶,則應將其存儲在會話中。或者,如果它是基於請求的數據,則將其作爲請求參數傳遞。或者,如果它實際上是產品servlet的責任,那麼您應該在那裏做。 – BalusC 2011-04-04 14:13:10

1

在你的doPost可以隨時撥打:

return doGet(request, response); 
+2

我相信你不明白這個問題。無論如何,將GET移植到POST或反之亦然是一種不好的做法。您應該使用GET預處理請求並使用POST來後處理請求,而不是混淆它們。 – BalusC 2011-04-04 13:38:32

相關問題