Yra keli ekranai ir servetėlės, kurios kartu sudaro „Java“ pagrįstą žiniatinklio programą. JSP perduoda valdymą iš vienos servetėlės į kitą servetę arba JSP dviem būdais - pirmyn ir peradresavimui. Persiuntimo metodas persiunčia užklausą iš vienos servetėlės į kitą žiniatinklio programos šaltinį. Šis šaltinis gali būti kita servetė, JSP puslapis arba HTML failas.
Kita vertus, peradresavimo metodas nukreipia užklausą į kitą programą. To negalima padaryti naudojant išankstinį metodą. Jei peradresavimas pasiekia kitą šaltinį toje pačioje programoje, tada jis naudoja kitokį URL nei pirminis užklausos URL. Jei nenorite atsakyti į užklausą, galite peradresuoti užklausą į kitą URL, o naršyklė siunčia naują užklausą jūsų nurodytu URL. Šis pranešimas pabrėžia keletą skirtumų, išsamiai paaiškinančius du metodus.
Internetinėse sistemose ar programose dažnai reikia perduoti valdymą tarp skirtingų išteklių ar JSP. Pvz., Jei norite pateikti užsakymą iš el. Prekybos svetainės, prieš tęsdami, pirmiausia turite užsiregistruoti. Jei dar nesate prisiregistravę jų sistemoje, gali tekti perkelti krepšį į JSP formą, atsakingą už registracijos procesą. Pirmyn veiksmas naudojamas specialiai šiam tikslui. Jis naudojamas perduoti užklausą iš vieno JSP kitam ar kitam šaltiniui tame pačiame kontekste.
Šis metodas taip pat naudojamas HTTP užklausoms persiųsti, tačiau skirtingai nei persiuntimas, tai yra dviejų etapų procesas, kai peradresavimas vyksta kliento pusėje į kitą programą. Peradresavimo metodas nukreipia vartotoją į naują URL. Kliento naršyklė automatiškai pateikia naują užklausą URL, nurodytame peradresavimo antraštėje, kuri gaunama iš serverio. Tai reikalauja bendravimo su klientu abipusio kelionės metodo, taigi santykinai lėčiau nei pirmyn.
Pirmyn () metodas yra naudojamas užklausai persiųsti iš vieno JSP kitam arba iš vieno JSP į servletą, arba iš vieno JSP į kitą šaltinį žiniatinklio programoje. Valdymas yra perduodamas konteinerio viduje, o naršyklė / klientas nedalyvauja procese. Pirmyn metodas deklaruojamas „RequestDispatcher“. „SendRedirect“ () metodas yra deklaruojamas „HttPServletResponse“ ir yra naudojamas nukreipti kliento užklausą į kitą URL, kuris galimas kitame serveryje ar kontekste. Naudodami peradresavimą, galite peradresuoti naršyklę į kitą programą iš viso.
Vienas iš pagrindinių skirtumų tarp šių dviejų metodų yra tas, kad žiniatinklio talpykla visus procesus tvarko viduje, jei yra persiuntimas (), o URL nesikeičia kliento naršyklėje, todėl klientas / naršyklė nedalyvauja, palikdami juos visiškai nežinančius, kad veiksmas jau įvyko. „SendRedirect“ () atveju metodas nustato tinkamas antraštes ir turinį, kad užklausa būtų nukreipta į kitą URL, o naršyklė pasirūpina naujos užklausos siuntimu į URL, kuris klientui yra matomas keičiantis URL naršyklėje..
Kai užklausos metu vykdomas pirmyn () metodas, dabartinė užklausa persiunčiama į kitą JSP puslapį ir dabartinio JSP apdorojimas nutraukiamas. Prašymą galima persiųsti į servletę, parašytą „Java“ programavimo kalba, arba į statinį HTML puslapį. „SendRedirect“ () užklausoje paprasčiausiai nurodoma naršyklei pereiti į kitą URL, siunčiant vykdymo valdymą už žiniatinklio programos ribų. Jis naudoja dviejų pakopų procesą, nurodydamas naršyklės URL pateikti kitą užklausą, kuri perduoda valdymą klientui.
Persiuntimas () veikia serveryje ir vykdomas greičiau nei „SendRedirect“ (). Peradresavimas turi pereiti per naršyklę ir laukti, kol naršyklė pateiks naują HTTP užklausą. Peradresavimas verčia serverį siųsti HTTP atsakymo būsenos kodą 302 su vietos antrašte su nauju URL į naršyklę, o po to, kai naršyklė gauna būsenos kodą 302, ji pateikia naują užklausą URL, esančiame vietos antraštėje. Tam reikalingas abipusis bendravimas su klientu, todėl tai santykinai lėtesnė nei pirmyn ().
Išmokti skirtumą tarp pirmyn ir peradresavimo metodų yra viena iš svarbiausių „Java“ kūrėjų dalių. Nors valdiklis gali atlikti persiuntimo arba peradresavimo metodą užklausos apdorojimo pabaigoje, jie turi savo paskirtį. Didžiąją laiko dalį naudotumėte persiuntimo () metodą, nes jis yra šiek tiek greitesnis nei „SendRedirect“ (), kuriam iš tikrųjų reikalingas bendravimas su klientu pirmyn ir atgal, todėl jis yra lėtesnis nei persiuntimas. Na, nukreipdami galite naršyklę nukreipti į kitą programą. Tai negali būti padaryta į priekį. Trumpai tariant, persiuntimas geriausiai veikia, kai vienas komponentas turi vykdyti verslo logiką ir dalytis rezultatais su kitu komponentu, o peradresavimas geriausiai veikia tada, kai klientas turėtų būti nukreiptas iš vieno puslapio į kitą.