sendRedirect()
metoda přesměruje odpověď na jiný zdroj. Tato metoda skutečně způsobí, že klient (prohlížeč) vytvoří nový požadavek, aby se dostal ke zdroji. Klient může vidět novou adresu url v prohlížeči.
sendRedirect () přijímá relativní URL, takže může jít o zdroje uvnitř nebo vně serveru.
Servlet: sendRedirect () a Request Dispečer
hlavní rozdíl mezi přesměrování a požadavek dispečink je, že přesměrování dělá klient(prohlížeč) vytvořit nový požadavek se dostat ke zdroji, uživatel může vidět novou adresu URL, zatímco žádost odeslání získat zdroj ve stejném požadavku a URL se nemění.
dalším velmi důležitým rozdílem je také to, že sendRedirect () pracuje na objektu odpovědi, zatímco odeslání požadavku pracuje na objektu požadavku.
příklad demonstrující použití 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(); } }}
rozdíl mezi forward () a sendRedirect()
forward () | sendRedirect() |
---|---|
funguje to na straně serveru. | funguje na straně klienta. |
vždy odešle stejný požadavek a objekt odpovědi. | vždy odešle nový požadavek na objekt. |
funguje pouze v rámci serveru. | funguje uvnitř i vně serveru. |
v této metodě je veškeré zpracování zpracováváno interně web container. | v této metodě je veškeré zpracování zpracováno jiným servletem. |
je to rychlejší. | je pomalejší. |
použití adresy metody forward () lze vidět v adresním řádku. | použití adresy metody forward () nelze vidět v adresním řádku. |
RequestDispatcher rozhraní se používá pro deklaraci. | HttpServletResponse se používá pro deklaraci. |
v návrhu MVC je velmi užitečné skrýt přímý přístup. | v MVC design pattern není vhodné skrýt přímý přístup. |
objekt znovu použije. | objekt znovu nepoužívá. |
příklad: požadavek.getRequestDispacher („servlet_1“).forward (request response); | příklad: odpověď.sendRedirect („Servlet_1“); |