Java programmeringssprog er meget brugt til programmering på skrivebordet, mobil og servermiljøer . Når en bruger sender data fra en formular eller klikker på linket til en webadresse , kan Java-programmører bruge Servlet klasse at bestemme, hvordan server-side program reagerer på denne anmodning. En Servlet kan give svar gennem omdirigere og videresendelse . Det er vigtigt for Java- programmører til at forstå ligheden og forskellene mellem de to metoder , og for at vide, hvilken en til at bruge, afhængigt af deres behov. Similarity
Både viderestilling og omdirigere giver en måde , der tillader en Java Servlet at overføre behandlingen af brugerens data til en anden controller i en web-applikation. I Model-View -Controller mønster, som er almindeligt anvendt til Java web-applikationer, kan en controller interagere med andre controllere og styrer samspillet mellem de synspunkter og modeller. Normalt en controller er en anden Java Servlet , men det kan også være en JSP side .
Forskelle
forwarding handling er udført på server-side , og er gennemsigtig for webbrowseren på klientsiden . Det betyder, at URL-adressen i adresselinjen i webbrowseren , vil ikke ændre sig, når videresendelse opstår. I modsætning hertil er omdirigere handling udført på klientsiden . Redirect sker i to trin , da serveren har at instruere webbrowseren på klientsiden til at hente en anden adresse, som den er at omdirigere til . Som et resultat, vil URL'en i adresselinjen ændre sig efter at omdirigere . Desuden kan forwarding ikke ske til en anden URL placeret uden for webprogrammet og omdirigere kan gøres for at nogen websteder placeret overalt.
Kutymer
Forwarding bruger RequestDispatcher klasse, som er opnået fra " getServletContext () " metode til Servlet . Til fremad metoden " fremad ( )" fra " RequestDispatcher klassen kaldes For eksempel vil følgende kode sende svaret til en anden side hedder result.jsp : .
String destination =" /WEB -INF /pages /result.jsp ",
RequestDispatcher rd = getServletContext () getRequestDispatcher (destination ), .
rd.forward ( anmodning respons) ,
Omdirigering bruger " sendRedirect () "-metoden af svaret objekt , som er fremstillet af den aktuelle Servlet klassen for eksempel vil følgende kode omdirigere svar på en anden side kaldet destination.jsp : .
String destination = "/jsp /destination.jsp "
response.sendRedirect ( response.encodeRedirectURL ( destination )),
Overvejelser
omdirigere operation er lidt langsommere end videresendelse fordi webbrowseren behov for at udføre to operationer for at hente adressen før og efter omlægningen . Desuden genstande transmitteres i den oprindelige anmodning omfanget er stadig tilgængelige under forwarding , men vil blive tabt under omdirigere . Som sådan bør omdirigere kun anvendes når browseren lov til at genindlæse den resulterende adressen efter at omdirigere . i andre tilfælde bør videresendelse anvendes.