2012-03-27 21 views
5

Guardando attraverso un codice legacy che ho di fronte a me con puntoni uno, vedo:Redirect o in avanti

<global-forwards> 
    ... 
    <forward name="accessDenied" path="/www/jsp/AccessDeniedForm.do" redirect="true" /> 
</global-forwards> 

quindi è solo un attaccante globale da inviare a un accesso negato pagina. Sono curioso della decisione di reindirizzamento anziché forward. Quali sono i vantaggi e gli svantaggi del suo utilizzo?

+0

Risposta Stavo cercando è qui ... http://stackoverflow.com/questions/614516/why-use-redirect-true-in-struts-1-forward Questo thread può essere chiuso come duplicato. Scusate. – dublintech

risposta

5

Quali sono i pro ei contro di usarlo?

Prima di discutere i pro ei contro dell'utilizzo di tale elemento di inoltro con reindirizzamento impostato su true, capiamo cosa sta effettivamente accadendo con quella configurazione. Quando il reindirizzamento è impostato su true nell'elemento forward, un'istruzione di reindirizzamento deve essere inviata all'agente utente in modo che venga emessa una nuova richiesta per la risorsa di questo forward. Questo link probabilmente fornirà informazioni dettagliate di cui hai bisogno.

Il valore predefinito per il reindirizzamento è su falso, essenzialmente quando viene chiamato l'elemento forward, inoltra il percorso specificato e il gioco è fatto. Se stai impostando il reindirizzamento su true, ad esempio, il browser eseguirà un'altra richiesta. Quindi penso che con questi detti, probabilmente sai o hai un'idea di pro e contro se vuoi davvero usarlo.

1

In reindirizzamento, il controllo può essere indirizzato a server diversi o addirittura a un altro nome di dominio. Il reindirizzamento esegue un round trip. Quando viene inviato un reindirizzamento, viene inviato al client e le informazioni dell'URL reindirizzato si trovano nell'intestazione istruire il browser per passare all'URL successivo. Questo fungerà da nuova richiesta e tutti i dati di richiesta e risposta saranno persi.

In avanti, l'inoltro viene eseguito dal lato server, l'URL del browser client non cambia.I dati non vengono persi. È proprio come l'aggiornamento di una pagina del browser. Qualunque dato pubblicato nel primo invio viene nuovamente inviato nuovamente. Quindi usarlo con cautela.

Sia forward che redirect vengono utilizzati in diversi scenari, l'inoltro globale deve essere reindirizzato perché si tratta di una situazione di errore.

Il reindirizzamento è più lento in quanto ha bisogno di un viaggio di andata e ritorno. Le spedizioni sono più veloci.

+0

Capisco la differenza tra forward e redirect. Sto solo cercando i pro ei contro di entrambi gli approcci e quando usare ogni approccio nella configurazione dei montanti. – dublintech

+0

pro e contro sono anche spiegati nella risposta di cui sopra. – cherit

0

Se si specifica

redirect = "true", Struts utilizza un client-side redirect

[response.sendRedirect()]

. Il JSP verrà richiamato da una nuova richiesta del browser e tutti i dati memorizzati nella vecchia richiesta andranno persi.