Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Краденные лабы / 8308_Треско_Сергеев_ЛР№2

.pdf
Скачиваний:
4
Добавлен:
08.04.2023
Размер:
375.76 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра Вычислительной техники

ОТЧЕТ по лабораторным работам №2

по дисциплине «Распределённые системы» ТЕМА: Сервлеты

Студенты гр. 8308

 

Треско М.Ю.

 

 

 

Сергеев В.С.

Преподаватель

 

 

Бекенева Я.А.

Санкт-Петербург

2022

Цель работы

Изучение технологий сервлетов.

Основные теоретические положения

Сервлет – небольшая программа, которая выполняется на серверной стороне Web соединения.

Сервлет является классом Java, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ.

Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях.

Жизненный цикл сервлета состоит из следующих шагов:

1.В случае отсутствия сервлета в контейнере класс сервлета загружается контейнером, после чего контейнер создает экземпляр класса сервлета. После создание объекта класса сервлета контейнер вызывает метод init(). Этот метод инициализирует сервлет и вызывается в первую очередь, до того, как сервлет сможет обслуживать запросы. За весь жизненный цикл метод init() вызывается только один раз.

2.Обслуживание клиентского запроса. Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих методов. Если поступил запрос, метод для которого не реализован, вызывается метод родительского класса и обычно завершается возвращением ошибки инициатору запроса.

3.В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.

Задание на лабораторную работу

Реализовать сервлет, который при запуске приложения (метод GET) отображал страницу, позволяющую ввести своё имя, фамилию и e-mail в текстовые поля и по нажатию кнопки «отправить» (метод POST) выводил бы страницу, где показывалось, что именно было введено. Если какое-то поле было оставлено пустым, то выводить сообщение о том, что данное поле не заполнялось.

Выполнение работы

Исходный код:

package lab;

import java.io.IOException; import java.io.PrintWriter;

import javax.servlet.annotation.WebServlet; 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 MusicList */

public class Form extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet() */

public Form() { super();

// TODO Auto-generated constructor stub

}

/**

*@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

*response)

*/

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>Mail form</title></head>"); out.println("<body>");

out.println("<h1>Mail form</h1>");

out.println("<form action=\"Form\" method=\"POST\">");

out.println("<p>Name <input type=\"text\" name=\"name\" /></p>");

out.println("<p>Surname <input type=\"text\" name=\"surname\" /></p>");

out.println("<p>Email <input type=\"text\" name=\"email\" /></p>");

out.println("<input type=\"submit\" value=\"create

result\"></input>");

out.println("</form>"); out.println("</body>"); out.println("</html>");

}finally {

//Закрытие потока вывода out.close();

}

}

/**

*@see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

*response)

*/

protected void doPost(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>Mail form</title></head>"); out.println("<body>");

out.println("<h1>Mail form</h1>");

String name = request.getParameter("name"); if (name.trim().isEmpty())

name = "was not entered"; out.println("Name: " + name + "<br>");

String surname = request.getParameter("surname"); if (surname.trim().isEmpty())

surname = "was not entered"; out.println("Surname: " + surname + "<br>"); String email = request.getParameter("email"); if (email.trim().isEmpty())

email = "was not entered"; out.println("Email: " + email + "<br>"); out.println("</body>"); out.println("</html>");

}finally {

//Закрытие потока вывода

out.close();

}

}

}

Скриншоты работы сервлета:

Рисунок 1. Страница, полученная методом doGet

Рисунок 2. Страница, полученная методом doPost

Вывод

При выполнении лабораторной работы изучены и применены технологии работы с сервлетами.