Turinys
Visas dinaminis žiniatinklis siunčia ir gauna parametrus, kuriais vartotojas gali siųsti informaciją į „Http“ serverį. Pavyzdžiui, įprastame prisijungimo ekrane turime nusiųsti vartotojo vardą ir slaptažodį į serverį, kad jie būtų patvirtinti.Kaip naršyklė siunčia šiuos parametrus naudojant GET arba POST metodą, paaiškinta žiniatinklio serverio arba HTTP serverio mokymo programoje. Šiame vadove pamatysime, kaip gauti prisijungimo informaciją serveryje naudojant „Servlet“ API.
Pirmas dalykas, kurį ketiname padaryti, yra sukurti mūsų svetainėje puslapį login.html su šiuo turiniu:
Vartotojas | |
Raktas |
Kitas dalykas yra sukurti „Servlet“, kuris gauna užklausą / login, kuris yra adresas, nurodytas žymos login.html veiksmo atribute.
paketas com.login.servlets; importuoti java.io.IOException; importuoti java.io.PrintWriter; importuoti javax.servlet.ServletException; importuoti javax.servlet.http.HttpServlet; importuoti javax.servlet.http.HttpServletRequest; importuoti javax.servlet.http.HttpServletResponse; viešosios klasės „LoginServlet“ pratęsia „HttpServlet“ {@Orride protected void doGet („HttpServletRequest req“, „HttpServletResponse resp“) meta „ServletException“, „IOException“ {String user = req.getParameter ("user"); Eilutės leidimas = req.getParameter ("slaptažodis"); if ("login" .quals (vartotojas) && "login" .equals (pass)) {response (resp, "login ok"); } else {atsakymas (resp., "Prisijungimo klaida"); }} privatus negaliojantis atsakymas (HttpServletResponse resp, String msg) meta IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + žinutė + ""); out.println (""); out.println (""); }}
Mes sudarome tai Servletas ir mes įtraukiame LoginServlet.class Adresų knygoje / WEB-INF / klasės.
Mes modifikuojame web.xml, kad susietume / prisijungtume naudodami šią servletą.
login-servlet com.login.servlets.LoginServlet login-servlet / login
Iš naujo paleidžiame serverį, atidarome puslapį login.html, įvedame x vartotojui, x įvedame slaptažodį ir paspaudžiame mygtuką „Pateikti“.
Problema ta, kad slaptas slaptažodis matomas URL… / prisijungti? User = admin & password = atx123, jis liks naršyklės istorijoje ir visi, kurie po mūsų prisijungia prie naršyklės, gali jį lengvai gauti, nebent mes naudojame privatų naršymą arba jis gali būti ištaisytas pakeitus formos pateikimo metodą į POST, esantį login.html.
Vartotojas | |
Raktas |
Čia atsitinka tai, kad neįdiegėme „doPost“ metodo (mes įgyvendiname tik „doGet“), todėl mūsų servletas negali priimti POST užklausų. Šis kodas rodo pakeitimus, reikalingus, kad jis veiktų.
paketas com.login.servlets; importuoti java.io.IOException; importuoti java.io.PrintWriter; importuoti javax.servlet.ServletException; importuoti javax.servlet.http.HttpServlet; importuoti javax.servlet.http.HttpServletRequest; importuoti javax.servlet.http.HttpServletResponse; viešoji klasė „LoginServlet“ pratęsia „HttpServlet“ {@Orride protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String user = req.getParameter ("user"); Eilutės leidimas = req.getParameter ("raktas"); if ("admin" .quals (user) && "atx123" .equals (pass)) {response (resp, "login ok"); } else {atsakymas (resp., "Prisijungimo klaida"); }} privatus negaliojantis atsakymas (HttpServletResponse resp, String msg) meta IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + žinutė + ""); out.println (""); out.println (""); }}
Vienintelis pakeitimas yra tas, kad „doGet“ pakeičiau „doPost“. Iš naujo sukompilavus ir įdiegus „Servlet“, iš naujo paleidus serverį ir vėl naudojant login.html, jis vėl veikia normaliai.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką