Jsp sayfaları, Servlet'lerde parametrelerin, GET ve POST yönteminin nasıl gönderileceğini

İçindekiler

Tüm dinamik web, kullanıcının Http sunucusuna bilgi gönderme şekli olan parametreleri gönderir ve alır. Örneğin, tipik bir oturum açma ekranında, doğrulamak için kullanıcı adını ve parolayı sunucuya göndermemiz gerekir.
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.
wave wave wave wave wave