İçindekiler
Tarayıcının GET veya POST yöntemini kullanarak bu parametreleri nasıl gönderdiği Web Sunucusu veya HTTP Sunucusu öğreticisinde açıklanmıştır. Bu eğitimde göreceğimiz şey, Servlet API'sini kullanarak sunucuda oturum açma bilgilerinin nasıl alınacağıdır.
İlk yapacağımız şey sitemizde aşağıdaki içerikle bir login.html sayfası oluşturmak:
kullanıcı | |
Anahtar |
Sonraki adım, login.html etiketinin action özniteliğinde belirtilen adres olan / login'deki isteği alan bir Servlet oluşturmaktır.
paket com.login.servlet; java.io.IOException'ı içe aktarın; java.io.PrintWriter'ı içe aktarın; javax.servlet.ServletException'ı içe aktarın; javax.servlet.http.HttpServlet'i içe aktarın; javax.servlet.http.HttpServletRequest'i içe aktarın; javax.servlet.http.HttpServletResponse'yi içe aktarın; public class LoginServlet, HttpServlet'i genişletir {@Override protected void doGet (HttpServletRequest req, HttpServletResponse resp) fırlatır ServletException, IOException {String user = req.getParameter ("user"); String pass = req.getParameter ("şifre"); if ("login" .equals (kullanıcı) && "login" .equals (geçti)) {response (yanıt, "login tamam"); } else {response (yanıt, "Giriş hatası"); }} özel geçersiz yanıt (HttpServletResponse yanıt, String msg) IOException'ı atar {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + mesaj + ""); out.println (""); out.println (""); }}
Bunu derliyoruz servlet ve biz dahil ediyoruz LoginServlet.class adres defterinde / WEB-INF / sınıflar.
Bu Servlet ile bağlantı kurmak / oturum açmak için web.xml'i değiştiriyoruz.
login-servlet com.login.servlets.LoginServlet login-servlet / login
Sunucuyu yeniden başlatıyoruz, login.html sayfasını açıyoruz, kullanıcıya x, şifreye x koyuyoruz ve gönder butonuna basıyoruz.
Buradaki sorun, gizli şifrenin URL'de görünmesi… / login?Kullanıcı = admin & password = atx123, tarayıcı geçmişinde kalacak ve biz gizli tarama kullanmadıkça tarayıcıya bizden sonra erişen herkes şifreyi kolayca alabilir. veya login.html'de form gönderme yöntemi POST olarak değiştirilerek düzeltilebilir.
kullanıcı | |
Anahtar |
Burada olan, doPost yöntemini uygulamadığımızdır (yalnızca doGet'i uygularız), bu nedenle Servlet'imiz POST isteklerini alamaz. Aşağıdaki kod, çalışması için gereken değişikliği gösterir.
paket com.login.servlet; java.io.IOException'ı içe aktarın; java.io.PrintWriter'ı içe aktarın; javax.servlet.ServletException'ı içe aktarın; javax.servlet.http.HttpServlet'i içe aktarın; javax.servlet.http.HttpServletRequest'i içe aktarın; javax.servlet.http.HttpServletResponse'yi içe aktarın; public class LoginServlet, HttpServlet'i genişletir {@Override protected void doPost (HttpServletRequest req, HttpServletResponse resp) fırlatır ServletException, IOException {String user = req.getParameter ("user"); String pass = req.getParameter ("anahtar"); if ("admin" .equals (kullanıcı) && "atx123" .equals (geçer)) {response (yanıt, "giriş tamam"); } else {response (yanıt, "Giriş hatası"); }} özel geçersiz yanıt (HttpServletResponse yanıt, String msg) IOException'ı atar {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + mesaj + ""); out.println (""); out.println (""); }}
Tek değişiklik, doGet'i doPost ile değiştirmem. Servlet'i yeniden derleyip dağıttıktan, sunucuyu yeniden başlattıktan ve login.html'yi tekrar kullandıktan sonra tekrar normal şekilde çalışır.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.