Jsp страници как да изпращате параметри, метод GET и POST в Servlets

Съдържание

Всички динамични уеб изпращат и получават параметри, които са начинът, по който потребителят може да изпраща информация до Http сървъра. Например, в типичен екран за вход трябва да изпратим потребителското име и паролата на сървъра, за да го потвърдим.
Как браузърът изпраща тези параметри с помощта на метода GET или POST е обяснено в урока за уеб сървър или HTTP сървър. Това, което ще видим в този урок, е как да извлечем информация за вход на сървъра, използвайки API на Servlet.
Първото нещо, което ще направим, е да създадем страница login.html на нашия сайт със следното съдържание:
 
Потребител
Ключ

Следващото нещо е да създадете Servlet, който получава заявката в / login, което е адресът, посочен в атрибута action на маркера login.html.
 пакет com.login.servlets; импортиране на java.io.IOException; импортиране на java.io.PrintWriter; импортиране на javax.servlet.ServletException; импортиране на javax.servlet.http.HttpServlet; импортиране на javax.servlet.http.HttpServletRequest; импортиране на javax.servlet.http.HttpServletResponse; публичен клас LoginServlet разширява HttpServlet {@Override защитена void doGet (HttpServletRequest req, HttpServletResponse resp) хвърля ServletException, IOException {String user = req.getParameter ("потребител"); String pass = req.getParameter ("парола"); if ("login" .equals (user) && "login" .equals (pass)) {response (resp, "login ok"); } else {response (resp, "Login error"); }} частен отговор на void (HttpServletResponse resp, String msg) изхвърля IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + msg + ""); out.println (""); out.println (""); }}

Ние съставяме това Servlet и включваме LoginServlet.class В адресната книга / WEB-INF / класове.
Ние променяме web.xml, за да се свържем / влезем с този сървлет.
 login-servlet com.login.servlets.LoginServlet login-servlet / login 

Рестартираме сървъра, отваряме страницата login.html, поставяме потребител x, парола x x и натискаме бутона за изпращане.
Проблемът тук е, че секретната парола е видима в URL адреса … / login? User = admin & password = atx123, тя ще остане в историята на браузъра и всеки, който има достъп до браузъра след нас, може лесно да я получи, освен ако не използваме частно сърфиране или може да бъде поправено чрез промяна на метода за подаване на формуляр на POST в login.html.
 
Потребител
Ключ

Това, което се случва тук, е, че не сме приложили метода doPost (прилагаме само doGet), така че нашият сървлет не е в състояние да получава POST заявки. Следният код показва необходимата промяна, за да работи.
 пакет com.login.servlets; импортиране на java.io.IOException; импортиране на java.io.PrintWriter; импортиране на javax.servlet.ServletException; импортиране на javax.servlet.http.HttpServlet; импортиране на javax.servlet.http.HttpServletRequest; импортиране на javax.servlet.http.HttpServletResponse; публичен клас LoginServlet разширява HttpServlet {@Override защитена void doPost (HttpServletRequest req, HttpServletResponse resp) изхвърля ServletException, IOException {String user = req.getParameter ("потребител"); String pass = req.getParameter ("ключ"); if ("admin" .equals (user) && "atx123" .equals (pass)) {response (resp, "login ok"); } else {response (resp, "Login error"); }} частен отговор на void (HttpServletResponse resp, String msg) изхвърля IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + msg + ""); out.println (""); out.println (""); }}

Единствената промяна е, че замених doGet с doPost. След прекомпилиране и разгръщане на сървлета, рестартиране на сървъра и повторно използване на login.html, той отново работи нормално.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave