23:47
Урок 38: Работа с формами и параметрами

Курс по программированию на Java

Урок 38: Работа с формами и параметрами

Работа с формами и параметрами является важной частью разработки веб-приложений. Формы позволяют пользователям вводить данные, которые затем отправляются на сервер для обработки. В этом уроке мы рассмотрим, как создавать HTML-формы, обрабатывать параметры, отправленные с форм, и как использовать сервлеты и JSP для работы с этими данными.

Создание HTML-формы

HTML-форма используется для ввода данных пользователем. Пример простой формы:

<!DOCTYPE html>
<html lang="ru">
<head>
 <meta charset="UTF-8">
 <title>Input Form</title>
</head>
<body>
 <h1>Input Form</h1>
 <form action="submitForm" method="post">
 <label for="name">Name:</label>
 <input type="text" id="name" name="name"><br><br>
 <label for="email">Email:</label>
 <input type="email" id="email" name="email"><br><br>
 <input type="submit" value="Submit">
 </form>
</body>
</html>

Обработка параметров формы

Для обработки параметров формы в Java используется сервлет. Пример сервлета:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/submitForm")
public class FormServlet extends HttpServlet {
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 String name = request.getParameter("name");
 String email = request.getParameter("email");
 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println("<h1>Form Data</h1>");
 out.println("<p>Name: " + name + "</p>");
 out.println("<p>Email: " + email + "</p>");
 }
}

Результат выполнения

Сервлет обрабатывает POST-запрос, извлекает параметры name и email, а затем отображает их на веб-странице.

Передача данных между сервлетами и JSP

Для передачи данных между сервлетами и JSP можно использовать атрибуты запроса. Пример сервлета, передающего данные на JSP-страницу:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/submitForm")
public class FormServlet extends HttpServlet {
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 String name = request.getParameter("name");
 String email = request.getParameter("email");
 request.setAttribute("name", name);
 request.setAttribute("email", email);
 request.getRequestDispatcher("/displayForm.jsp").forward(request, response);
 }
}

Создание JSP-страницы для отображения данных формы

Пример JSP-страницы, отображающей данные формы:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>Display Form</title>
</head>
<body>
 <h1>Form Data</h1>
 <p>Name: ${name}</p>
 <p>Email: ${email}</p>
</body>
</html>

Результат выполнения

JSP-страница отображает данные, переданные сервлетом, используя JSP Expression Language (EL).

Упражнения

Упражнение 1: Создание формы для ввода данных пользователя

Создайте HTML-форму, которая позволяет пользователю ввести свое имя и возраст. Форма должна отправлять данные на сервлет методом POST.

Решение:

<!DOCTYPE html>
<html lang="ru">
<head>
 <meta charset="UTF-8">
 <title>User Input Form</title>
</head>
<body>
 <h1>User Input Form</h1>
 <form action="submitUser" method="post">
 <label for="name">Name:</label>
 <input type="text" id="name" name="name"><br><br>
 <label for="age">Age:</label>
 <input type="number" id="age" name="age"><br><br>
 <input type="submit" value="Submit">
 </form>
</body>
</html>

Объяснение: HTML-форма отправляет данные на сервлет SubmitUserServlet методом POST. Параметры формы включают имя и возраст пользователя.

Упражнение 2: Обработка данных формы и отображение результата

Используйте предыдущий пример формы и сервлета. Модифицируйте сервлет и создайте JSP-страницу для отображения имени пользователя и возраста.

Решение:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/submitUser")
public class SubmitUserServlet extends HttpServlet {
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 String name = request.getParameter("name");
 int age = Integer.parseInt(request.getParameter("age"));
 request.setAttribute("name", name);
 request.setAttribute("age", age);
 request.getRequestDispatcher("/displayUser.jsp").forward(request, response);
 }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>Display User</title>
</head>
<body>
 <h1>User Data</h1>
 <p>Name: ${name}</p>
 <p>Age: ${age}</p>
</body>
</html>

Объяснение: Сервлет обрабатывает POST-запрос, извлекает параметры name и age, а затем перенаправляет их на JSP-страницу displayUser.jsp, которая отображает данные.

Категория: Java | Просмотров: 88 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: