forward w Servlecie

0

Mam problem z metodą doPost(...)

Dla kodu poniżej, w metodzie doPost(...) jest brak reakcji - view.forward(request, response); w ogóle nie reaguje.

public class AssignService extends HttpServlet {
	
	  public void doGet(HttpServletRequest request, HttpServletResponse response)
			        throws ServletException, IOException
			  {
		  		// jakies operacje

		  	
		  		RequestDispatcher view = request.getRequestDispatcher("c.jsp");
		  		
		  		view.forward(request, response);
		  		
			  }
	  
	  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
	
	  		RequestDispatcher view = request.getRequestDispatcher ("c.jsp");
		  		
		  		view.forward(request, response); // BRAK REAKCJI
	
	  }
	  
}

Dziwne jest to dlatego, że podobny kod mam w metodzie doGet(...) i tam wszystko działa bardzo dobrze!
A jeśli w metodzie doPost(...) zrobię przekierowanie do doGet(...) to również działa dobrze:

public class AssignService extends HttpServlet {
	
	  public void doGet(HttpServletRequest request, HttpServletResponse response)
			        throws ServletException, IOException
			  {
		  		// jakies operacje

		  	
		  		RequestDispatcher view = request.getRequestDispatcher("c.jsp");
		  		
		  		view.forward(request, response);
		  		
			  }
	  
	  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
	
	  		doGet(request, response); // to działa OK
	
	  }
	  
}

Jakie jest wytłumaczenie, że w pierwszym listeningu, metoda doPost(...) wykazuje brak reakcji, a w drugim działa prawidłowo?

0

A czy w przypadku metody Post wysyłasz dane tą metodą?

0

Nie wiem jakie jest wytłumaczenie, ja przekierowuje tak (w doGet() i w doPost())

getServletContext().getRequestDispatcher(...).forward(request,response);

i nie mam żadnych problemów

0

Oczywiście, że wysyłam formularz metodą POST.

bo napisał(a)

Nie wiem jakie jest wytłumaczenie, ja przekierowuje tak (w doGet() i w doPost())

getServletContext().getRequestDispatcher(...).forward(request,response);

i nie mam żadnych problemów

Oba sposoby przekierowywania są sobie równoważne - to samo co Ty zapisałeś w jednej linii, ja rozbiłem na dwie.

Mam problem ponieważ tak jak napisałem powyżej, przekierowanie w metodzie doGet(..) działa świetnie, a w doPost(..) w ogóle - mimo, że wklepuje dokładnie ten sam kod. Zadałem tutaj pytanie, bo być może ktoś doświadczony skojarzy, co może być przyczyną. Tymbardziej jest to dziwne, że gdy w metodzie doPost(..) przekażę sterowanie do doGet(..) to jest dobrze, ale niestety w swojej aplikacji nie mogę skorzystać z tego rozwiązania...

0

Mi chodziło o różnicę między request.getRequestDispatcher() a ServletContext.getRequestDispatcher(), a nie o różnicę między jednym wierszem a dwoma. Sprawdziłem w dokumentacji, masz rację - nie ma różnicy.
W obu kodach który zamieściłeś przekierowanie które działa jest poprzedzone jakimiś operacjami, a niedziałające nie jest. Może w braku tych operacji tkwi przyczyna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1