Postoji više zaslona i servleta koji zajedno tvore web aplikaciju na bazi Java. JSP prenosi kontrolu s jednog servleta na drugi servlet ili JSP koristeći dvije metode - Naprijed i Preusmjeravanje. Način prosljeđivanja prosljeđuje zahtjev s jednog servleta na drugi resurs u web aplikaciji i taj resurs može biti drugi servlet, JSP stranica ili HTML datoteka.
Metoda preusmjeravanja, s druge strane, zahtjev preusmjerava na drugu aplikaciju. Ne možete to učiniti naprijed. Ako preusmjeravanje pogodi drugačiji resurs u istoj aplikaciji, koristi se drugačiji URL od izvornog URL-a zahtjeva. Ako ne želite odgovoriti na zahtjev, možete ga preusmjeriti na drugi URL, a preglednik će novi zahtjev poslati na URL koji ste dobili. U ovom postu nalazi se nekoliko razlika koje detaljno objašnjavaju dvije metode.
U internetskim sustavima ili aplikacijama često postoji potreba za prijenosom kontrole između različitih resursa ili JSP-a. Na primjer, ako želite izvršiti narudžbu s web mjesta za e-trgovinu, prvo se morate registrirati prije nego što nastavite. Ako još niste registrirani na njihovom sustavu, košarica će možda trebati prenijeti kontrolu na JSP obrazac koji je odgovoran za postupak registracije. Djelovanje naprijed koristi se posebno u tu svrhu. Koristi se za prosljeđivanje zahtjeva s jednog JSP na drugi ili drugi resurs u istom kontekstu.
Ova se metoda također koristi za prosljeđivanje HTTP zahtjeva, ali za razliku od prosljeđivanja, to je postupak u dva koraka, gdje se preusmjeravanje događa na strani klijenta u drugu aplikaciju u potpunosti. Metoda preusmjeravanja preusmjerava korisnika na novi URL. Klijentov preglednik automatski postavlja novi zahtjev na URL naveden u zaglavlju preusmjeravanja koji dolazi od poslužitelja. Zahtijeva komunikaciju u suprotnom smjeru s klijentom, pa je relativno sporiji od naprijed.
Metoda forward () koristi se za prosljeđivanje zahtjeva s jednog JSP na drugi ili iz jednog JSP u servlet ili iz jednog JSP u drugi resurs u web aplikaciji. Kontrolu interno prenosi spremnik i preglednik / klijent nisu uključeni u proces. Način prosljeđivanja deklariran je u RequestDispatcher. Metoda SendRedirect () deklarirana je u HttPServletResponse i koristi se za preusmjeravanje zahtjeva klijenta na drugi URL koji je dostupan na drugom poslužitelju ili kontekstu. Pomoću preusmjeravanja možete pregledač potpuno preusmjeriti na drugu aplikaciju.
Jedna od ključnih razlika između dvije metode je da web spremnik interno upravlja sa svim procesima u slučaju naprijed (), a URL se ne mijenja u pregledniku klijenta, pa klijent / preglednik nije uključen ostavljajući ih potpuno svjesnim da akcija se već dogodila. U slučaju SendRedirect (), metoda postavlja odgovarajuće zaglavlja i tjelesni sadržaj kako bi zahtjev preusmjerio na drugi URL, a preglednik se brine za slanje novog zahtjeva na URL koji je vidljiv klijentu dok se URL mijenja u pregledniku..
Kada se metoda forward () izvrši u vrijeme zahtjeva, trenutni zahtjev se prosljeđuje na drugu JSP stranicu, a obrada trenutnog JSP-a prestaje. Zahtjev se može proslijediti na servlet napisan na programskom jeziku Java ili na statičku HTML stranicu. SendRedirect () zahtjev jednostavno poručuje pregledniku da prijeđe na drugi URL, šalju kontrolu izvršenja izvan web aplikacije. Koristi postupak u dva koraka kako bi uputio URL preglednika da podnese još jedan zahtjev koji prenosi kontrolu na klijenta.
Naprijed () djeluje unutar poslužitelja i izvodi se brže od SendRedirect (). Preusmjeravanje mora proći kroz preglednik, a zatim pričekati da preglednik uputi novi HTTP zahtjev. Preusmjeravanje čini da poslužitelj pošalje kôd 302 odgovora HTTP odgovora sa zaglavljem lokacije koji sadrži novi URL pregledniku, a nakon što je preglednik primio statusni kod 302, uputi novi zahtjev na URL koji se nalazi u zaglavlju lokacije. Ovo zahtijeva povratnu komunikaciju s klijentom, što ga čini relativno sporim od naprijed ().
Učenje razlike između naprijed i preusmjeravanja metoda jedan je od najvažnijih dijelova za Java programere. Iako kontroler može na kraju obrade zahtjeva izvršiti ili naprijed ili preusmjeravanje, oni imaju svoj skup korištenja. Većinu vremena koristili biste metodu naprijed () jer je ona nešto brže od SendRedirect (), što zapravo zahtijeva komunikaciju u povratnom smjeru s klijentom što ga čini sporijim od naprijed. Pa, preusmjeravanjem, možete usmjeriti preglednik na drugu aplikaciju. To se ne može učiniti s naprijed. Ukratko, naprijed najbolje funkcionira kada jedna komponenta mora obavljati poslovnu logiku i dijeliti rezultate s drugom komponentom, dok preusmjeravanje najbolje funkcionira kada bi klijent trebao biti preusmjeren sa jedne stranice na drugu..