2011-04-04 30 views
8

Cómo especifico una redirección a otro servlet, en el método doPost() de un servlet.Enviando redirigir a otro servlet/JSP sin perder los parámetros de solicitud.

en el momento en que estoy usando

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

que está mal ya que, mis parámetros en el método doGet() de productos que no están siendo llamados e inicializados.

Así que me quedo con una página de productos de vacío después de entrar en:/

Respuesta

15

Es necesario utilizar HttpServletResponse#sendRedirect() para enviar una redirección. Suponiendo que el servlet se mapea en un patrón de URL de /products:

response.sendRedirect("/products"); 

De esta manera el navegador web será instruido para disparar una nueva petición HTTP GET en la URL dada y por lo tanto el método de la instancia de servlet doGet() se llamará donde a su vez puede cargar los productos y reenviarlos a un JSP que los muestra de la manera habitual.

+0

Si estoy estableciendo un atributo request.setAttribute ("test", new String ("ABC")); cómo puedo acceder a él en el otro servlet. – user478636

+0

Depende del requisito funcional. Si es el usuario que inició sesión, debe almacenarlo en la sesión. O si se trata de datos basados ​​en solicitud, páselos como parámetro de solicitud. O si en realidad es responsabilidad del servlet de productos, debe hacerlo allí. – BalusC

1

En su doPost siempre puede llamar a:

return doGet(request, response); 
+2

Creo que no entiende el problema. De todos modos, portar GET a POST o viceversa es de alguna manera una mala práctica. Debe usar GET para preprocesar las solicitudes y usar POST para postprocesar las solicitudes y no mezclarlas. – BalusC

Cuestiones relacionadas