Примеры программ JSP: форма регистрации и входа

примеры программ jsp

В этом руководстве я покажу вам процесс разработки примеров программ с использованием JSP и реализацию архитектуры MVC.

Будут разработаны следующие примеры программ:

  • Регистрационная форма
  • Форма входа и выхода
  • Форма JSP

Использование регистрационной формы через JSP

В регистрационной форме у нас будет форма для заполнения всех данных, которая будет содержать имя, имя пользователя, пароль, адрес, контактный номер и т. д.

Эта форма поможет нам зарегистрироваться в приложении. Они берут все наши данные и хранят их в база данных или кэш.

В этом примере мы возьмем «Форму регистрации гуру», которая имеет следующие поля:

  1. Имя
  2. Фамилия
  3. Имя пользователя
  4. Пароль
  5. Адрес
  6. Контактный номер

После заполнения всех этих данных у нас есть кнопка «Отправить», при нажатии на которую все данные будут сохранены.

Пример 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 будет вызван, когда все параметры будут заполнены.

Когда вы выполните приведенный выше код, вы получите следующий результат:

Использование регистрационной формы через JSP

Использование регистрационной формы через 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 обрабатывает данные формы, используя следующие методы:

  1. getParameter(): используется для получения значения параметра формы.
  2. getParameterValues(): используется для возврата нескольких значений параметров.
  3. getParameterNames(): используется для получения имен параметров.
  4. 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 объекта запроса.

Когда мы выполним приведенный выше код, мы получим следующий вывод:

Обработка форм JSP

Обработка форм JSP

Вывод:

Когда мы выполняем action_form.jsp, мы получаем форму с двумя полями имени пользователя и пароля и кнопкой отправки. Затем, после ввода имени пользователя и пароля, мы можем нажать «Отправить», и она перейдет на следующую страницу, которая выдает выходные данные в виде страницы обработки формы с приветственное сообщение.