Sadržaj
Sav dinamički web šalje i prima parametre koji su način na koji korisnik može slati informacije Http poslužitelju. Na primjer, na tipičnom zaslonu za prijavu moramo poslati korisničko ime i lozinku poslužitelju kako bismo ih potvrdili.Kako preglednik šalje te parametre pomoću metode GET ili POST objašnjeno je u vodiču Web poslužitelj ili HTTP poslužitelj. Ono što ćemo vidjeti u ovom vodiču je kako dohvatiti podatke za prijavu na poslužitelju pomoću Servlet API -ja.
Prvo što ćemo učiniti je stvoriti stranicu login.html na našoj web stranici sa sljedećim sadržajem:
Korisnik | |
Ključ |
Sljedeća stvar je stvaranje Servleta koji prima zahtjev u / login, što je adresa navedena u atributu radnje oznake login.html.
paket com.login.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; uvoz javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; javna klasa LoginServlet proširuje HttpServlet {@Override zaštićenu prazninu doGet (HttpServletRequest req, HttpServletResponse resp) baca ServletException, IOException {String user = req.getParameter ("korisnik"); String pass = req.getParameter ("lozinka"); if ("login" .equals (korisnik) && "login" .equals (pass)) {odgovor (odg., "prijava u redu"); } else {response (resp, "Login error"); }} private void response (HttpServletResponse resp, String msg) baca IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + msg + ""); out.println (""); out.println (""); }}
Ovo sastavljamo Servlet i uključujemo LoginServlet.class U adresaru / WEB-INF / klase.
Mijenjamo web.xml za povezivanje / prijavu s ovim Servlet -om.
login-servlet com.login.servlets.LoginServlet login-servlet / login
Ponovno pokrećemo poslužitelj, otvorimo stranicu login.html, stavljamo x in korisnika, x in lozinku i pritisnemo gumb za slanje.
Problem je u tome što je tajna lozinka vidljiva u URL -u … / login? User = admin & password = atx123, ostat će u povijesti preglednika i svi koji pristupe pregledniku nakon nas mogu je lako dobiti, osim ako ne koristimo privatno pregledavanje ili se može popraviti promjenom načina slanja obrasca na POST u login.html.
Korisnik | |
Ključ |
Ono što se ovdje događa je da nismo implementirali doPost metodu (implementiramo samo doGet) pa naš Servlet nije sposoban primiti POST zahtjeve. Sljedeći kôd prikazuje izmjene potrebne za njegovo funkcioniranje.
paket com.login.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; uvoz javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; javna klasa LoginServlet proširuje HttpServlet {@Override zaštićenu void doPost (HttpServletRequest req, HttpServletResponse resp) baca ServletException, IOException {String user = req.getParameter ("korisnik"); String pass = req.getParameter ("ključ"); if ("admin" .equals (korisnik) && "atx123" .equals (pass)) {odgovor (odg., "prijava u redu"); } else {response (resp, "Login error"); }} private void response (HttpServletResponse resp, String msg) baca IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + msg + ""); out.println (""); out.println (""); }}
Jedina promjena je ta što sam doGet zamijenio doPostom. Nakon rekompilacije i implementacije Servleta, ponovnog pokretanja poslužitelja i ponovne upotrebe login.html, opet radi normalno.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod