Примеры программ JSP: форма регистрации и входа
В этом руководстве я покажу вам процесс разработки примеров программ с использованием JSP и реализацию архитектуры MVC.
Будут разработаны следующие примеры программ:
- Регистрационная форма
- Форма входа и выхода
- Форма JSP
Использование регистрационной формы через JSP
В регистрационной форме у нас будет форма для заполнения всех данных, которая будет содержать имя, имя пользователя, пароль, адрес, контактный номер и т. д.
Эта форма поможет нам зарегистрироваться в приложении. Они берут все наши данные и хранят их в база данных или кэш.
В этом примере мы возьмем «Форму регистрации гуру», которая имеет следующие поля:
- Имя
- Фамилия
- Имя пользователя
- Пароль
- Адрес
- Контактный номер
После заполнения всех этих данных у нас есть кнопка «Отправить», при нажатии на которую все данные будут сохранены.
Пример 1: Register_1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Registration Form</title> </head> <body> <h1>Guru Register Form</h1> <form action="guru_register" method="post"> <table style="with: 50%"> <tr> <td>First Name</td> <td><input type="text" name="first_name" /></td> </tr> <tr> <td>Last Name</td> <td><input type="text" name="last_name" /></td> </tr> <tr> <td>UserName</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password" /></td> </tr> <tr> <td>Address</td> <td><input type="text" name="address" /></td> </tr> <tr> <td>Contact No</td> <td><input type="text" name="contact" /></td> </tr></table> <input type="submit" value="Submit" /></form> </body> </html>
Расшифровка кода:
Строка кода 11: Здесь мы берем имя формы, которая имеет действие, то есть сервлет, к которому будет обработан запрос, и имя сервлета — guru_register.java. Запрос будет обработан методом POST.
Строка кода 14–16: Здесь мы принимаем тип ввода как текст, а имя — это имя.
Строка кода 18–20: Здесь мы принимаем тип ввода как текст, а имя — фамилию.
Строка кода 22–24: Здесь мы принимаем тип ввода в виде текста, а имя — имя пользователя.
Строка кода 26–28: Здесь мы принимаем тип ввода в качестве пароля (это скроет пароль при вводе) и имя в качестве пароля.
Строка кода 30–32: Здесь мы принимаем тип ввода как текст и имя как адрес.
Строка кода 34–36: Здесь мы принимаем тип ввода как текст и имя как контакт.
Строка кода 37: Здесь мы берем кнопку типа submit, и значение также равно submit. При нажатии этой кнопки действие перейдет к соответствующему сервлету guru_register, куда все значения параметров будут переданы в запросе.
Пример 2: Guru_register.java
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class guru_register */ public class guru_register extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String first_name = request.getParameter("first_name"); String last_name = request.getParameter("last_name"); String username = request.getParameter("username"); String password = request.getParameter("password"); String address = request.getParameter("address"); String contact = request.getParameter("contact"); if(first_name.isEmpty() || last_name.isEmpty() || username.isEmpty() || password.isEmpty() || address.isEmpty() || contact.isEmpty()) { RequestDispatcher req = request.getRequestDispatcher("register_1.jsp"); req.include(request, response); } else { RequestDispatcher req = request.getRequestDispatcher("register_2.jsp"); req.forward(request, response); } } }
Расшифровка кода:
Строка кода 14: Здесь мы определяем guru_servlet, который расширяет HttpServlet.
Строка кода 18: Это действие doPost()
метод, который будет вызываться, когда мы упомянем POST в атрибуте действия в приведенной выше форме JSP.
Строка кода 20–25: Здесь мы получаем значения из запроса, т. е. first_name, Last_name, имя пользователя, пароль, адрес и контакт, используя request.getParameter.
Строка кода 27–32: Здесь мы принимаем условие if, при котором мы проверяем любой из параметров, полученных из запроса, на предмет того, являются ли они пустыми или нет. Если какой-либо параметр пуст, то он войдет в это условие ( first_name.isEmpty() || Last_name.isEmpty || username.isEmpty || пароль.isEmpty || адрес.isEmpty || contact.isEmpty()), и мы имеем для получения объекта RequestDispatcher с использованием объекта запроса, который перенаправит запрос на Register_1.jsp. Сюда мы также включаем объекты запроса и ответа.
Строка кода 33–37: Этот случай будет выполнен, если какой-либо из параметров не пуст. Нам нужно будет получить объект requestDispatcher, используя объект запроса, который перенаправит запрос в Register_2.jsp. Здесь мы пересылаем объекты запроса и ответа.
Пример 3: Register_2.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success Page</title> </head> <body> <a><b>Welcome User!!!!</b></a> </body> </html>
Расшифровка кода:
Строка кода 10: Здесь мы говорим: добро пожаловать, пользователь. Этот JSP будет вызван, когда все параметры будут заполнены.
Когда вы выполните приведенный выше код, вы получите следующий результат:
Вывод:
Когда мы нажмем на Register_1.jsp, мы получим форму, в которой будут указаны такие данные, как имя, фамилия, имя пользователя, пароль, адрес, контакт. Все детали заполнены. Когда мы нажимаем кнопку «Отправить», мы получаем сообщение «Добро пожаловать, пользователь».
Форма входа и выхода
Как и форма регистрации, у нас будет форма входа и выхода.
В этом примере мы взяли форму входа в систему, в которой есть два поля «имя пользователя» и «пароль» с кнопкой отправки.
Когда мы нажимаем кнопку «Отправить», мы получаем приветственное сообщение с кнопкой выхода из системы.
Когда мы нажимаем кнопку выхода из системы, мы возвращаемся к форме входа.
Пример 1: Register_3.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Login Form</title> </head> <body> <form action="guru_login" method="post"> <table style="with: 50%"> <tr> <td>UserName</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password" /></td> </tr> </table> <input type="submit" value="Login" /></form> </body> </html>
Расшифровка кода:
Строка кода 10: Здесь мы берем имя формы, имеющее действие, т.е. сервлет, которому оно было передано, — guru_login.java. Метод, посредством которого он будет передавать POST.
Строка кода 13–16: Здесь мы берем поле ввода «имя пользователя», которое имеет текстовый тип.
Строка кода 17–20: Здесь мы берем поле ввода «пароль», которое имеет тип пароля.
Строка кода 22: Здесь мы берем кнопку «Отправить» со значением «Войти», на которую нажимаем, а затем она переходит к сервлету guru_login, где оба поля берутся с использованием объекта запроса.
Guru_login.java(сервлет)
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class guru_login */ public class guru_login extends HttpServlet { public guru_login() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String username = request.getParameter("username"); String password = request.getParameter("password"); if(username.isEmpty() || password.isEmpty() ) { RequestDispatcher req = request.getRequestDispatcher("register_3.jsp"); req.include(request, response); } else { RequestDispatcher req = request.getRequestDispatcher("register_4.jsp"); req.forward(request, response); } } }
Расшифровка кода:
Строка кода 5–9: Здесь мы импортируем необходимые импорты в код.
Строка кода 14: Здесь мы используем сервлет guru_login, который расширяет HttpServlet.
Строка кода 21: Здесь мы используем doPost()
метод, как и в форме, которую мы используем метод POST.
Строка кода 23–24: Здесь мы принимаем параметры, используя объект запроса, то есть имя пользователя и пароль.
Строка кода 25–29: Таким образом, мы принимаем условие «если», когда мы проверяем имя пользователя и пароль, пусты они или нет. В этом случае, если оно пусто, мы получаем объект requestdispatcher, который пересылает в Register_3.jsp объекты запроса и ответа.
Строка кода 30–34: Это будет выполнено, если оба не пусты, а затем перенаправит запрос в Register_4.jsp с объектами запроса и ответа.
Пример 2: Register_4.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Logged In</title> </head> <body> <table style="with: 50%"> <tr><td> <% String username = request.getParameter("username"); %> <a>Welcome <% out.println(username); %> User!!!! You have logged in.</a></td></tr> <tr></tr><tr><td></td><td></td><td><a href="register_3.jsp"><b>Logout</b></a></td></tr> </table> </body> </html>
Расшифровка кода:
Строка кода 12: Здесь мы получаем параметр «имя пользователя» из объекта запроса в имени пользователя строкового объекта.
Строка кода 13: Здесь у нас есть приветственное сообщение с именем пользователя.
Строка кода 14: Здесь мы ссылаемся на форму выхода из системы, которая перенаправляется на Register_3.jsp.
Когда вы выполните приведенный выше код, вы получите следующий вывод:
Вывод:
Здесь, когда мы нажимаем на Register_3.jsp, мы получаем два поля «имя пользователя» и «пароль» с кнопкой входа в систему.
После нажатия кнопки «Войти» вы получите сообщение ниже с кнопкой «Выход».
При нажатии на кнопку выхода вы возвращаетесь на страницу входа.
Обработка форм JSP с использованием getParameter()
Обработка форм JSP:
Формы — это распространенный метод веб-обработки. Нам нужно отправить информацию на веб-сервер и эту информацию.
Существует два широко используемых метода отправки и возврата информации на веб-сервер.
ПОЛУЧИТЬ метод:
- Это метод по умолчанию для передачи информации из браузера на веб-сервер.
- Он отправляет закодированную информацию, разделенную символом ?, добавленным к URL-странице.
- Он также имеет ограничение по размеру: мы можем отправить в запросе только 1024 символа.
- Нам следует избегать отправки пароля и конфиденциальной информации методом GET.
Почтовый метод:
- Почтовый метод — наиболее надежный метод отправки информации на сервер.
- Он отправляет информацию как отдельное сообщение.
- Он отправляется в виде текстовой строки после ? в URL-адресе.
- Обычно он используется для отправки конфиденциальной информации.
JSP обрабатывает данные формы, используя следующие методы:
getParameter()
: используется для получения значения параметра формы.getParameterValues()
: используется для возврата нескольких значений параметров.getParameterNames()
: используется для получения имен параметров.getInputStream()
: используется для чтения двоичных данных, отправленных клиентом.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
В этом примере мы взяли форму с двумя полями «имя пользователя» и «пароль» с кнопкой отправки.
Action_form.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Form</title> </head> <body> <form action="action_form_process.jsp" method="GET"> UserName: <input type="text" name="username"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Action_form_process.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>Form Processing</h1> <p><b>Welcome User:</b> <%= request.getParameter("username")%> </p> </body> </html>
Пояснение кода: Action_form.jsp
Строка кода 10: Здесь мы определили форму, через которую мы обработали действие к какому-то другому JSP. В параметре действия мы добавляем тот JSP, к которому он должен быть обработан методом GET.
Здесь мы используем метод GET для передачи информации, то есть имени пользователя и пароля.
Строка кода 11–14: Здесь мы берем такие поля, как имя пользователя и пароль, которые являются текстовыми полями, и получаем вводимые пользователем данные.
Этот ввод можно получить с помощью метода getParameter. Кроме того, у нас есть кнопка отправки с типом submit type, которая помогает нам передавать значения полей в action_form_process.jsp.
Action_form_process.jsp
Строка кода 14: Здесь мы получаем значения полей ввода из action_form.jsp, используя метод getParameter объекта запроса.
Когда мы выполним приведенный выше код, мы получим следующий вывод:
Вывод:
Когда мы выполняем action_form.jsp, мы получаем форму с двумя полями имени пользователя и пароля и кнопкой отправки. Затем, после ввода имени пользователя и пароля, мы можем нажать «Отправить», и она перейдет на следующую страницу, которая выдает выходные данные в виде страницы обработки формы с приветственное сообщение.