МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ВТ
ОТЧЕТ по лабораторной работе №2
по дисциплине «Распределенные системы и сети» Тема: Сервлеты
Студентка гр. 8308 |
|
Довженко А.Е. |
|
Преподаватель |
|
Бекенева Я.А. |
|
|
|||
|
|
|
|
Санкт-Петербург, 2022
Цель работы
Знакомство с технологией построения Web-приложений на основе сервлетов.
Задание к лабораторной работе
Реализовать сервлет, который при запуске приложения (метод GET)
отображал страницу, позволяющую ввести своё имя, фамилию и e-mail в
текстовые поля и по нажатию кнопки «отправить» (метод POST) выводил бы страницу, где показывалось, что именно было введено. Если какое-то поле было оставлено пустым, то выводить сообщение о том, что данное поле не заполнялось.
Результаты выполнения работы
При выполнении данной лабораторной работы было сформирован сервлет
NewServlet.java, содержащий методы doGet и doPost. Метод doGet вызывается при передаче HTTP-протоколом данных посредством запроса GET и формирует
HTML-сраницу с помощью разметки, позволяющую ввести данные в соответствующие поля ввода и по нажатию кнопки осуществить передачу,
которая осуществляется при помощи запроса POST. Передача обрабатывается методом doPost, который в свою очередь строит другую HTML-страницу,
содержащую введенные данные.
Полная распечатка файла NewServlet.java представлена в приложении А.
2
Иллюстрация работы Web-приложения
При обращении к сервлету посредством запроса методом doGet()
формируется страница, представленная на рис. 1
Рис 1 |
Рис 2 |
Код метода doGet(), формирующего представленную страницу:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter();
try {
//Создание HTML-страницы out.println("<html>");
out.println("<head><title>Ввод данных</title></head>"); out.println("<body bgcolor='#DCDCDC'>"); out.println("<h2>Введите данные</h2>");
out.println("<form method='post'>"); out.println("<label>Имя: "); out.println("</br><input type='text' name='name'>"); out.println("</br></label>"); out.println("</br><label>Фамилия: ");
out.println("</br><input type='text' name='surname'>"); out.println("</br></label>"); out.println("</br><label>Почта: "); out.println("</br><input type='mail' name='mail'>"); out.println("</br></br></label>");
out.println("<button type='submit'>Ввод</button>"); out.println("</form></body></html>");
} finally { out.close();
}
}
3
Данная страница позволяет ввести данные пользователя (рис. 2) и при нажатии кнопки «Ввод» вызывает метод doPost(), формирующий в качестве ответа на запрос другую страницу (рис. 3), содержащую введенные данные. При отсутствии входных данных выведется сообщение о незаполнении (рис. 4).
Рис 3 |
Рис 4 |
Код метода doPost(), обрабатывающего данные и формирующего страницу:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String name = request.getParameter("name");
String surname = request.getParameter("surname"); String mail = request.getParameter("mail");
PrintWriter out = response.getWriter(); // Получение потока для вывода ответа try {
out.println("<html>"); out.println("<head><title>Данные</title></head>"); out.println("<body bgcolor='#DCDCDC'>"); out.println("<h2>Введенные данные</h2>");
if (Objects.equals(name, ""))
out.println("<p>Поле имени не заполнялось.</p>");
else
out.println("<p>Имя: " + name + "</p>"); if (Objects.equals(surname, ""))
out.println("<p>Поле фамилии не заполнялось.</p>");
else
out.println("<p>Фамилия: " + surname + "</p>"); if (Objects.equals(mail, ""))
out.println("<p>Поле почты не заполнялось.</p>");
else
out.println("<p>Почта: " + mail + "</p>");
} finally { out.close();
}
}
4
Выводы.
В результате выполнения лабораторной работы ознакомилась с технологией построения Web-приложений на основе сервлетов.
Был реализован сервлет, который при запуске приложения (метод GET)
отображает страницу, позволяющую ввести своё имя, фамилию и e-mail в
текстовые поля и по нажатию кнопки «отправить» (метод POST) выводит страницу, где показывается, что именно было введено. Если какое-то поле было оставлено пустым, то выводится сообщение о том, что данное поле не заполнялось.
5
ПРИЛОЖЕНИЕ А
NewServlet.java
package rslab2;
import java.io.IOException;
import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;
// библиотечный класс для работы с потоками вывода import java.io.PrintWriter;
import java.util.Objects;
public class NewServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public NewServlet() { super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); // Задание типа кодировки для параметров запроса
response.setContentType("text/html;charset=UTF-8"); // Задание типа содержимого для ответа
PrintWriter out = response.getWriter(); // Получение потока для вывода ответа
try {
//Создание HTML-страницы out.println("<html>");
out.println("<head><title>Ввод данных</title></head>"); out.println("<body bgcolor='#DCDCDC'>"); out.println("<h2>Введите данные</h2>");
out.println("<form method='post'>"); out.println("<label>Имя: "); out.println("</br><input type='text' name='name'>"); out.println("</br></label>"); out.println("</br><label>Фамилия: ");
out.println("</br><input type='text' name='surname'>"); out.println("</br></label>"); out.println("</br><label>Почта: "); out.println("</br><input type='mail' name='mail'>"); out.println("</br></br></label>");
out.println("<button type='submit'>Ввод</button>"); out.println("</form></body></html>");
} finally { out.close();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); // Задание типа кодировки для параметров запроса
response.setContentType("text/html;charset=UTF-8"); // Задание типа содержимого для ответа
6
String name = request.getParameter("name");
String surname = request.getParameter("surname");
String mail = request.getParameter("mail");
PrintWriter out = response.getWriter(); // Получение потока для вывода ответа
try {
out.println("<html>"); out.println("<head><title>Данные</title></head>"); out.println("<body bgcolor='#DCDCDC'>");
out.println("<h2>Введенные данные</h2>"); if (Objects.equals(name, ""))
out.println("<p>Поле имени не заполнялось.</p>");
else
out.println("<p>Имя: " + name + "</p>");
if (Objects.equals(surname, ""))
out.println("<p>Поле фамилии не заполнялось.</p>");
else
out.println("<p>Фамилия: " + surname + "</p>");
if (Objects.equals(mail, ""))
out.println("<p>Поле почты не заполнялось.</p>");
else
out.println("<p>Почта: " + mail + "</p>");
} finally { out.close();
}
}
}
7