Java programmeringsspråk er mye brukt for programmering på skrivebordet , mobil og server miljøer . Når en bruker sender dataene fra et skjema eller klikk på linken til en Web-adresse , kan Java- programmerere bruke Servlet klassen for å finne ut hvordan server-side -programmet svarer på denne forespørselen . En Servlet kan gi svar gjennom omdirigere og videresending . Det er viktig for Java- programmerere å forstå likhet og forskjeller mellom de to metodene , og å vite hvilken du vil bruke, avhengig av deres behov . Likhet
Både videresending og omdirigere en måte som gjør at en Java Servlet å overføre behandlingen av brukerens data til en annen kontroller innenfor en web-applikasjon . I Model -View- Controller mønster som vanligvis brukes for Java Web -applikasjoner , kan en kontroller samhandle med andre kontrollere og styrer samspillet mellom visningene og modellene. Vanligvis en kontroller er en annen Java Servlet , men det kan også være en JSP side .
Forskjeller
videresending handlingen er utført på server-side og er transparent for nettleseren på klientsiden . Dette betyr at URL i adressefeltet til nettleseren vil ikke endre seg når videresending oppstår . I kontrast er omdirigere handling gjort på klientsiden . Omdirigere skjer i to trinn siden serveren har å instruere nettleseren på klientsiden for å hente en annen adresse som det omdirigerer til . Som et resultat , vil URL i adresselinjen endres etter omdirigere . Videre kan videresending ikke gjøres til en annen URL ligger utenfor web-applikasjonen mens omdirigere kan gjøres til alle steder plassert hvor som helst .
Bruksområder
Forwarding bruker RequestDispatcher klasse som er hentet fra " getServletContext ( ) "-metoden av Servlet . Til fremover , metoden "fremover ( ) " fra " RequestDispatcher klassen heter For eksempel vil følgende kode videresende svar til en annen side som heter result.jsp : .
String reisemålet =" /WEB -INF /pages /result.jsp ";
RequestDispatcher rd = getServletContext ( ) getRequestDispatcher (mål ) ; .
rd.forward (forespørsel , respons) ,
Omadressere bruker " sendRedirect ( ) "-metoden for responsen objekt, som er hentet fra dagens Servlet klasse for eksempel vil følgende kode omdirigere svar til en annen side som heter destination.jsp : .
String reisemålet = " /jsp /destination.jsp ";
response.sendRedirect ( response.encodeRedirectURL (mål ));
Hensyn
omdirigere operasjonen er litt tregere enn videresending fordi nettleseren trenger for å utføre to operasjoner for å hente adressen før og etter omdirigere . Videre eventuelle objekter som overføres i den opprinnelige forespørselen omfanget er fortsatt tilgjengelig under videresending , men vil gå tapt under omdirigere . Som sådan bør omdirigere bare brukes når nettleseren er lov å laste den resulterende adresse etter omdirigere . i andre tilfeller bør videresending brukes.