Урок 36: Введение в разработку веб-приложений
Веб-приложения — это программы, которые работают на веб-серверах и доступны пользователям через браузеры. Веб-приложения могут предоставлять различные сервисы, от простых сайтов до сложных систем управления данными. В этом уроке мы рассмотрим основные концепции веб-разработки, включая клиент-серверную архитектуру, протокол HTTP и основы работы с сервлетами в Java.
Клиент-серверная архитектура
Клиент-серверная архитектура предполагает наличие двух основных компонентов: клиента и сервера. Клиент отправляет запросы на сервер, который обрабатывает эти запросы и отправляет ответы обратно клиенту. Примером клиента может быть веб-браузер, а сервером — веб-сервер, работающий с базой данных и логикой приложения.
Протокол HTTP
Протокол HTTP (HyperText Transfer Protocol) является основным протоколом, используемым для передачи данных в вебе. HTTP определяет методы (например, GET и POST), которые используются для обмена данными между клиентом и сервером. Веб-приложения в Java часто используют сервлеты для обработки HTTP-запросов.
Пример сервлета
Сервлеты — это классы Java, которые могут обрабатывать HTTP-запросы. Пример простого сервлета:
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("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello, World!</h1>");
}
}
Результат выполнения
Упражнения
Упражнение 1: Создание сервлета для вывода текущей даты и времени
Напишите сервлет, который выводит на страницу текущую дату и время. Используйте объект java.util.Date
для получения текущей даты и времени.
Решение:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
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("/datetime")
public class DateTimeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Date currentDate = new Date();
out.println("<h1>Current Date and Time: " + currentDate.toString() + "</h1>");
}
}
Объяснение: Сервлет обрабатывает GET-запрос и выводит текущую дату и время на веб-страницу. Объект Date
используется для получения текущей даты и времени.
Упражнение 2: Создание сервлета для обработки POST-запросов
Напишите сервлет, который обрабатывает POST-запросы и выводит имя пользователя, переданное через параметр name
. Веб-форма должна отправлять данные на сервлет методом POST.
Решение:
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("/greet")
public class GreetServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
out.println("<h1>Hello, " + name + "!</h1>");
}
}
Объяснение: Сервлет обрабатывает POST-запрос и выводит приветствие с именем пользователя, переданным через параметр name
. Веб-форма должна отправлять данные методом POST.