Differenza tra avanti e reindirizzamento

Ci sono più schermate e servlet che insieme formano un'applicazione web basata su Java. Un JSP passa il controllo da un servlet a un altro servlet o JSP utilizzando due metodi: Forward e Redirect. Il metodo Forward inoltra una richiesta da un servlet a un'altra risorsa in un'applicazione Web e questa risorsa può essere un altro servlet, una pagina JSP o un file HTML.

Il metodo Redirect, d'altra parte, reindirizza la richiesta a un'altra applicazione. Non puoi farlo con un metodo forward. Se un reindirizzamento raggiunge una risorsa diversa nella stessa applicazione, viene utilizzato un URL diverso dall'URL della richiesta originale. Se non si desidera rispondere a una richiesta, è possibile reindirizzare la richiesta a un altro URL e il browser invia quindi la nuova richiesta all'URL fornito dall'utente. Questo post evidenzia un paio di differenze che spiegano in dettaglio i due metodi.

Cos'è Forward?

Nei sistemi o applicazioni basati sul web, è spesso necessario trasferire il controllo tra diverse risorse o JSP. Ad esempio, se desideri effettuare un ordine da un sito di e-commerce, devi prima registrarti prima di procedere. Se non si è ancora registrati con il proprio sistema, è possibile che il carrello acquisti debba trasferire il controllo al modulo JSP responsabile della procedura di registrazione. L'azione diretta è utilizzata specificamente per questo scopo. Viene utilizzato per inoltrare la richiesta da un JSP a un altro o un'altra risorsa nello stesso contesto.

Cos'è il reindirizzamento?

Questo metodo viene anche utilizzato per inoltrare richieste HTTP ma a differenza di un forward, è un processo in due fasi in cui il reindirizzamento avviene sul lato client a un'applicazione diversa del tutto. Il metodo di reindirizzamento reindirizza l'utente a un nuovo URL. Il browser del client effettua automaticamente la nuova richiesta sull'URL specificato nell'intestazione di reindirizzamento proveniente dal server. Richiede una comunicazione di andata e ritorno con il cliente, quindi è relativamente più lento di un forward.

Differenza tra Forward e Redirect

Descrizione di Forward vs. Reindirizzare

Il metodo forward () viene utilizzato per inoltrare la richiesta da un JSP a un altro o da un JSP a un servlet o da un JSP a un'altra risorsa in un'applicazione Web. Il controllo viene passato internamente dal contenitore e il browser / client non è coinvolto nel processo. Il metodo forward è dichiarato in RequestDispatcher. Il metodo SendRedirect () è dichiarato in HttPServletResponse e viene utilizzato per reindirizzare la richiesta del client a un URL diverso che è disponibile su un server o contesto diverso. Con un reindirizzamento, puoi reindirizzare completamente il browser a un'applicazione diversa.

Coinvolgimento del cliente in Vs. Reindirizzare

Una delle differenze principali tra i due metodi è che il contenitore web gestisce internamente tutti i processi in caso di forward () e l'URL non cambia nel browser del client, quindi il client / browser non è coinvolto lasciandoli completamente inconsapevoli del fatto che il l'azione ha già avuto luogo In caso di SendRedirect (), il metodo imposta le intestazioni appropriate e il contenuto del corpo per reindirizzare la richiesta a un URL diverso e il browser si occupa di inviare la nuova richiesta all'URL che è visibile al client quando l'URL cambia nel browser.

Controllo dell'esecuzione

Quando il metodo forward () viene eseguito al momento della richiesta, la richiesta corrente viene inoltrata a un'altra pagina JSP e l'elaborazione del JSP corrente viene interrotta. La richiesta può essere inoltrata a un servlet scritto nel linguaggio di programmazione Java o a una pagina HTML statica. Una richiesta SendRedirect () indica semplicemente al browser di accedere a un URL diverso, inviando il controllo di esecuzione all'esterno dell'applicazione Web. Utilizza una procedura in due passaggi per indicare all'URL del browser di effettuare un'altra richiesta che trasferisce il controllo al client.

Velocità

Un forward () opera all'interno del server ed esegue più velocemente di un SendRedirect (). Un reindirizzamento deve passare attraverso il browser e quindi attendere che il browser effettui una nuova richiesta HTTP. Un reindirizzamento fa sì che il server invii il codice di stato di risposta HTTP 302 con un'intestazione di posizione contenente un nuovo URL al browser e, dopo che il browser ha ricevuto il codice di stato 302, effettua una nuova richiesta all'URL trovato nell'intestazione di posizione. Ciò richiede una comunicazione di andata e ritorno con il client che lo rende relativamente più lento di un forward ().

Forward vs. Redirect: Comparison Chart

Riassunto delle Vost. Reindirizzare

Imparare la differenza tra i metodi forward e redirect è una delle parti più importanti per gli sviluppatori Java. Mentre un controllore può eseguire un metodo di inoltro o di reindirizzamento al termine dell'elaborazione di una richiesta, ha il proprio insieme di usi. Nella maggior parte dei casi, si utilizza un metodo forward () poiché è leggermente più veloce di un SendRedirect (), che di fatto richiede una comunicazione di andata e ritorno con il client che lo rende più lento di un inoltro. Bene, con un reindirizzamento, puoi indirizzare il browser a un'altra applicazione. Questo non può essere fatto con un attaccante. In breve, un inoltro funziona meglio quando un componente deve eseguire la logica di business e condividere i risultati con un altro componente, mentre un reindirizzamento funziona meglio quando il client deve essere reindirizzato da una pagina all'altra.