Redirect vs. Forward in Java

June 2

Redirect vs. Forward in Java


Il linguaggio di programmazione Java è ampiamente utilizzato per la programmazione degli ambienti desktop, portatili e server. Quando un utente invia i dati da un modulo o fa clic sul collegamento a un indirizzo Web, i programmatori Java possono utilizzare la classe Servlet per determinare come l'applicazione lato server risponde a questa richiesta. Un Servlet in grado di fornire risposte attraverso il reindirizzamento e spedizioni. E 'importante per i programmatori Java per capire la somiglianza e le differenze tra i due metodi, e per sapere quale usare a seconda delle loro esigenze.

Somiglianza

Sia l'inoltro e il reindirizzamento fornisce un modo che permette una Servlet Java per trasferire al trattamento dei dati degli utenti ad un altro controllore all'interno di un'applicazione Web. Nel pattern Model-View-Controller che è comunemente usato per le applicazioni Web Java, un controller può interagire con altri controllori e gestisce le interazioni tra i punti di vista e dei modelli. Solitamente un controller è un'altra Java Servlet, ma può anche essere una pagina JSP.

differenze

L'azione di inoltro viene eseguita sul lato server ed è trasparente per il browser Web sul lato client. Questo significa che l'URL nella barra degli indirizzi del browser Web non cambierà quando si verifica l'inoltro. Al contrario, l'azione reindirizzando è fatto sul lato client. Redirect avviene in due fasi dal momento che il server deve istruire il browser sul lato client per andare a prendere un altro indirizzo che reindirizza a. Di conseguenza, l'URL nella barra degli indirizzi cambierà dopo il reindirizzamento. Inoltre, l'inoltro non può essere fatto a un altro URL situati al di fuori dell'applicazione Web, mentre il reindirizzamento può essere fatto per altri siti ubicati ovunque.

usi

Forwarding utilizza la classe RequestDispatcher che si ottiene dal metodo "getServletContext ()" del servlet. Per inoltrare, il metodo "in avanti ()" dalla "classe RequestDispatcher si chiama Ad esempio, il seguente codice inoltrerà la risposta a un'altra pagina chiamata result.jsp.:

destinazione String = "/WEB-INF/pages/result.jsp";

RequestDispatcher rd = getServletContext () getRequestDispatcher (destinazione).;

rd.forward (richiesta, risposta);

Reindirizzamento utilizza il metodo "sendRedirect ()" dell'oggetto risposta, che si ottiene dalla classe Servlet corrente. Ad esempio, il seguente codice reindirizzerà la risposta a un'altra pagina chiamata destination.jsp:

destinazione String = "/ jsp / destination.jsp";

response.sendRedirect (response.encodeRedirectURL (destinazione));

considerazioni

L'operazione di reindirizzamento è leggermente più lento spedizioni perché il browser Web deve eseguire due operazioni per andare a prendere l'indirizzo prima e dopo il riorientamento. Inoltre, tutti gli oggetti trasmessi nell'ambito richiesta originale sono ancora disponibili durante la trasmissione, ma verranno persi durante il reindirizzamento. Come tale, il reindirizzamento deve essere utilizzato solo quando è consentito il browser per ricaricare l'indirizzo risultante dopo il reindirizzamento. In altri casi, l'inoltro deve essere utilizzato.