sendRedirect()
metoda przekierowuje odpowiedź do innego zasobu. Ta metoda faktycznie sprawia, że klient (przeglądarka), aby utworzyć nowe żądanie, aby dostać się do zasobu. Klient może zobaczyć nowy adres url w przeglądarce.
sendredirect () akceptuje względny adres URL, więc może przejść do zasobów wewnątrz lub na zewnątrz serwera.
Servlet: sendredirect () i Request Dispatcher
główną różnicą między przekierowaniem a wysyłaniem żądania jest to, że przekierowanie sprawia, że klient(przeglądarka) tworzy nowe żądanie, aby dostać się do zasobu, użytkownik może zobaczyć nowy adres URL, podczas gdy request Dispatcher otrzymuje zasób w tym samym żądaniu, a URL nie zmienia się.
inną bardzo ważną różnicą jest to, że sendredirect() działa na obiekcie odpowiedzi, podczas gdy request dispatch działa na obiekcie żądania.
przykład demonstrujący użycie 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(); } }}
różnica między forward () I sendRedirect()
forward() | sendRedirect() |
---|---|
działa po stronie serwera. | działa po stronie klienta. |
zawsze wysyła ten sam obiekt żądania i odpowiedzi. | zawsze wysyła nowe żądanie dla obiektu. |
działa tylko wewnątrz serwera. | działa zarówno wewnątrz, jak i na zewnątrz serwera. |
w tej metodzie całe przetwarzanie jest obsługiwane wewnętrznie przez kontener sieciowy. | w tej metodzie wszystkie przetwarzanie jest obsługiwane przez inny servlet. |
jest szybszy. | jest wolniej. |
za pomocą metody forward () adres można zobaczyć w pasku adresu. | użycie adresu metody forward() nie jest widoczne w pasku adresu. |
interfejs RequestDispatcher jest używany do deklaracji. | httpservletresponse jest używany do deklaracji. |
jest to bardzo przydatne w wzorcu projektowym MVC, aby ukryć bezpośredni dostęp. | w wzorcu projektowym MVC nie jest przydatne ukrywanie bezpośredniego dostępu. |
ponownie wykorzystuje obiekt. | nie używa ponownie obiektu. |
przykład: żądanie.getRequestDispacher(„servlet_1”).forward (odpowiedź żądania); | przykład: odpowiedź.sendRedirect („Servlet_1”); |