2015-01-12 18 views

risposta

6

In generale, Redirect eseguirà un reindirizzamento http (con la posizione dell'intestazione). Significa che il browser del client cambierà la pagina. Elabora su un nuovo routing (può anche essere utilizzato per andare su un altro sito Web) e lo script vero e proprio terminerà.

Mentre Forward è interno, il browser del client non rileva alcuna differenza, è sufficiente eseguire un controller diverso. Il ciclo di invio consente all'utente di inoltrare il flusso di esecuzione a un altro controller/azione. Questo è molto utile per verificare se l'utente può accedere a determinate opzioni, reindirizzare gli utenti ad altri schermi o semplicemente riutilizzare il codice. Tuttavia, tieni presente che la creazione di un "inoltro" non equivale a eseguire un reindirizzamento HTTP. Anche se apparentemente hanno ottenuto lo stesso risultato. Il "forward" non ricarica la pagina corrente, tutto il reindirizzamento avviene in una singola richiesta, mentre il reindirizzamento HTTP ha bisogno di due richieste per completare il processo.

analogia simile può essere mostrato in JSP così,

Il metodo di HttpServletResponsesendRedirect(String path) dirà il cliente che dovrebbe inviare una richiesta per il percorso specificato. Quindi il cliente costruirà una nuova richiesta e la invierà al server. La cronologia del cliente verrà aggiornata in modo che i pulsanti avanti e indietro funzioneranno. Questo metodo è utile per reindirizzare a pagine su altri server e domini.

Il metodo in avanti della RequestDispatcher inoltrerà la ServletRequest e ServletResponse che è passato al percorso specificato nel getRequestDispatcher(String path). La risposta non sarà inviato al client e quindi il cliente non saprà di questo cambiamento di risorsa il server. Questo metodo è utile per comunicare tra le risorse del server, (servlet to servlet). Questo metodo è più veloce rispetto all'utilizzo di sendRedirect in quanto non è necessario alcun giro di andata e ritorno sul server.

Problemi correlati