sendRedirect()
metodo reindirizza la risposta a un’altra risorsa. Questo metodo rende effettivamente il client (browser) per creare una nuova richiesta per arrivare alla risorsa. Il client può vedere il nuovo URL nel browser.
sendRedirect () accetta l’URL relativo, quindi può andare per risorse all’interno o all’esterno del server.
Servlet: sendRedirect () e Request Dispatcher
La differenza principale tra un reindirizzamento e un dispacciamento della richiesta è che, il reindirizzamento fa sì che il client(browser) crei una nuova richiesta per accedere alla risorsa, l’utente può vedere il nuovo URL mentre request dispatch ottiene la risorsa nella stessa richiesta e l’URL non cambia.
Inoltre, un’altra differenza molto importante è che, sendRedirect() funziona sull’oggetto response mentre la spedizione della richiesta funziona sull’oggetto request.
Esempio di dimostrazione dell’utilizzo di sendRedirect()
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { response.sendRedirect("https://www.studytonight.com"); } finally { out.close(); } }}
Differenza tra forward () e sendRedirect()
forward() | sendRedirect() |
---|---|
Funziona sul lato server. | Funziona sul lato client. |
Invia sempre lo stesso oggetto di richiesta e risposta. | Invia sempre una nuova richiesta per l’oggetto. |
Funziona solo all’interno del server. | Funziona sia all’interno che all’esterno del server. |
In questo metodo, tutta l’elaborazione viene gestita internamente dal contenitore web. | In questo metodo, tutta l’elaborazione viene gestita da un altro servlet. |
È più veloce. | È più lento. |
Utilizzando forward () indirizzo metodo può essere visto nella barra degli indirizzi. | Utilizzando forward() indirizzo metodo non può essere visto nella barra degli indirizzi. |
L’interfaccia RequestDispatcher viene utilizzata per la dichiarazione. | HttpServletResponse viene utilizzato per la dichiarazione. |
È molto utile nel modello di progettazione MVC per nascondere l’accesso diretto. | Non è utile nel modello di progettazione MVC nascondere l’accesso diretto. |
Riutilizza l’oggetto. | Non riutilizza l’oggetto. |
Esempio: richiesta.getRequestDispacher (“servlet_1”).forward (request response); | Esempio: response.sendRedirect (“Servlet_1”); |