El lenguaje de programación Java es ampliamente utilizado para la programación en el escritorio , móviles y entornos de servidores . Cuando un usuario envía los datos de un formulario o hace clic en el enlace a una dirección web , los programadores de Java pueden utilizar la clase Servlet para determinar la aplicación de servidor responde a esta solicitud. Un servlet puede proporcionar respuestas a través de reorientación y reenviar. Es importante para los programadores de Java para entender las similitudes y las diferencias entre los dos métodos , y para saber cuál utilizar en función de sus necesidades. Similitud
Tanto el reenvío y redirigir proporciona una manera que permite que un servlet de Java para transferir el tratamiento de los datos de usuario a otro controlador en una aplicación web . En el patrón modelo - vista-controlador que se utiliza comúnmente para aplicaciones Web Java , un controlador puede interactuar con otros controladores y gestiona las interacciones entre los puntos de vista y los modelos . Por lo general, un controlador es otro Servlet Java, pero también puede ser una página JSP.
Diferencias
La acción de reenvío se realiza en el lado del servidor y es transparente para el explorador Web en el lado del cliente . Esto significa que la dirección URL en la barra de direcciones del explorador Web no cambia cuando se produce el reenvío . Por el contrario , la acción redirigir se realiza en el lado del cliente . Redireccionar ocurre en dos etapas ya que el servidor tiene que indicar al navegador web en el lado del cliente para ir a buscar otra dirección que se está redirigiendo a . Como resultado , la dirección URL en la barra de direcciones cambiará después de redirigir . Por otra parte , la expedición no se puede hacer a otra URL situado fuera de la aplicación Web ya reorientarlas se puede hacer a cualquier sitio ubicados en cualquier parte . Utiliza
Usos
Forwarding la RequestDispatcher clase que se obtiene a partir del método de la Servlet " ) getServletContext ( " . Para avanzar , el método " forward () " de la "clase RequestDispatcher se llama , por ejemplo , el siguiente código hará llegar la respuesta a otra página llamada result.jsp : .
Destino String = " /WEB -INF /pages /result.jsp ";
RequestDispatcher rd = getServletContext () getRequestDispatcher (destino ) ; .
rd.forward ( solicitud, respuesta ) ;
Redirigir utiliza el " sendRedirect ()" método del objeto de respuesta , que se obtiene de la clase Servlet actual Por ejemplo , el siguiente código redireccionará la respuesta a otra página llamada destination.jsp : .
destino String = " /jsp /destination.jsp " ;
response.sendRedirect ( response.encodeRedirectURL (destino ));
Consideraciones
La operación reorientación es ligeramente más lento que el reenvío ya que el navegador web necesita para llevar a cabo dos operaciones para ir a buscar la dirección de antes y después de la reorientación . Además , los objetos de transmisión en el ámbito solicitud original todavía están disponibles durante el avance , sino que se pierde durante la reorientación . Como tal , la reorientación debe utilizarse sólo cuando se permite que el navegador para recargar la dirección resultante después de redirigir . En otros casos , se debe utilizar el reenvío .