Приклади програми 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 in action у наведеній вище формі JSP.

Рядок коду 20-25: Тут ми отримуємо значення із запиту i.efirst_name, last_name, username, password, address and contact за допомогою request.getParameter.

Рядок коду 27-32: Тут ми використовуємо умову if, за якої ми перевіряємо будь-який із параметрів, отриманих із запиту, чи є вони порожніми. Якщо будь-який із параметрів порожній, він увійде в цю умову ( first_name.isEmpty() || last_name.isEmpty || username.isEmpty || password.isEmpty || address.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: Тут ми беремо поле введення «ім’я користувача», яке має тип text.

Рядок коду 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: Таким чином, ми виконуємо умову «if», коли ми перевіряємо ім’я користувача та пароль, чи вони порожні. У цьому випадку, якщо вони порожні, ми отримуємо об’єкт 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: Тут ми отримуємо параметр «username» з об’єкта запиту в рядковому об’єкті username.

Рядок коду 13: Тут у нас є вітальне повідомлення з іменем користувача.

Рядок коду 14: Тут ми посилаємося на вихід із форми, яка переспрямовує на register_3.jsp.

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

вихід:

Тут, коли ми натискаємо register_3.jsp, ми отримуємо два поля «ім’я користувача» та «пароль» із кнопкою входу.

Форма входу та виходу

Після натискання кнопки «Вхід» ви отримаєте наведене нижче повідомлення з кнопкою «Вийти».

Форма входу та виходу

Коли ви натискаєте кнопку виходу, ви повертаєтеся на сторінку входу

Форма входу та виходу

Обробка форми JSP за допомогою getParameter()

Обробка форми JSP:

Форми є поширеним методом веб-обробки. Нам потрібно надіслати інформацію на веб-сервер і цю інформацію.

Існує два найпоширеніші методи надсилання та повернення інформації на веб-сервер.

Метод GET:

  • Це стандартний метод передачі інформації з браузера на веб-сервер.
  • Він надсилає закодовану інформацію, розділену символом ?, доданим до URL-сторінки.
  • Він також має обмеження на розмір, і ми можемо надіслати лише 1024 символи в запиті.
  • Нам слід уникати надсилання пароля та конфіденційної інформації за допомогою методу GET.

Метод POST:

  • Метод пошти є найбільш надійним методом передачі інформації на сервер.
  • Він надсилає інформацію як окреме повідомлення.
  • Він надсилає як текстовий рядок після ? в 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, ми отримуємо форму з двома полями імені користувача та пароля та кнопкою надсилання. Тоді після введення імені користувача та пароля ми можемо натиснути «Надіслати», і він переходить на наступну сторінку, яка виводить як сторінку обробки форми з вітальне повідомлення.