Ставь 👍 если знал ответ и 🔥 если нет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👀3👍2
Anonymous Quiz
2%
Набор классов и интерфейсов для работы с базами данных
1%
Набор классов и интерфейсов для работы с файлами
96%
Набор классов и интерфейсов для работы с коллекциями объектов
1%
Набор классов и интерфейсов для работы с сетью
😁15❤1
Для вызова одного сервлета из другого в Java можно использовать интерфейс
RequestDispatcher, который позволяет перенаправлять запросы (forward) или включать содержимое другого сервлета (include). Это делается внутри сервлета-инициатора с использованием метода getRequestDispatcher(String path) или getNamedDispatcher(String name) для получения объекта RequestDispatcher.import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
public class FirstServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Логика обработки запроса
String username = request.getParameter("username");
request.setAttribute("user", username);
// Перенаправление запроса на другой сервлет
RequestDispatcher dispatcher = request.getRequestDispatcher("SecondServlet");
dispatcher.forward(request, response);
}
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
public class MainServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Включение заголовка
RequestDispatcher dispatcher = request.getRequestDispatcher("HeaderServlet");
dispatcher.include(request, response);
// Основной контент
response.getWriter().println("<h1>Main Content</h1>");
// Включение подвала
dispatcher = request.getRequestDispatcher("FooterServlet");
dispatcher.include(request, response);
}
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Получаем атрибут из запроса
String username = (String) request.getAttribute("user");
// Логика обработки
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
response.getWriter().println("Hello, " + username);
}
}
HttpServletRequest: request.getRequestDispatcher("SecondServlet").ServletContext: getServletContext().getRequestDispatcher("/SecondServlet").dispatcher.forward(request, response): Перенаправляет запрос.dispatcher.include(request, response): Включает содержимое.Чтобы вызвать один сервлет из другого, используйте
RequestDispatcher с методами forward или include для передачи управления или включения содержимого другого сервлета в ответ.Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🤯1
👾 1715 вопросов собесов на Java Developer
🔒 База реальных собесов
🔒 База тестовых заданий
👾 Список менторов
👩💻 Java
├ Вакансии
├ LeetCode ответы
└ Тесты
🖥 Python
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
🖥 Frontend
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
👩💻 С/С++
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
👩💻 Kotlin
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
👩💻 С#
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
👩💻 Swift
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
👩💻 PHP
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
🖥 Тестировщик
├ Вопросы собесов
├ Вакансии
└ Тесты
🖥 Data Science
├ Вопросы собесов
├ Вакансии
└ Тесты
👩💻 DevOps
├ Вопросы собесов
├ Вакансии
└ Тесты
👣 Golang
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
⚙ Backend
└ Вопросы собесов
👾 Список менторов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
├ Вопросы собесов
├ Вакансии
└ Тесты
├ Вопросы собесов
├ Вакансии
└ Тесты
├ Вопросы собесов
├ Вакансии
└ Тесты
├ Вопросы собесов
├ Вакансии
├ LeetCode ответы
└ Тесты
└ Вопросы собесов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3👾1
Java | Вопросы собесов pinned «👾 1715 вопросов собесов на Java Developer 🔒 База реальных собесов 🔒 База тестовых заданий 👾 Список менторов 👩💻 Java ├ Вакансии ├ LeetCode ответы └ Тесты 🖥 Python ├ Вопросы собесов ├ Вакансии ├ LeetCode ответы └ Тесты 🖥 Frontend ├ Вопросы собесов ├ Вакансии…»
Anonymous Quiz
8%
Конструкция для работы с потоками данных
2%
Конструкция для работы с сетевыми соединениями
75%
Конструкция для автоматического закрытия ресурсов
15%
Конструкция для обработки исключений
👀9😁5👍3❤1🔥1
Anonymous Quiz
8%
Класс, который нельзя инстанцировать
7%
Абстрактный класс
81%
Контракт, который должен быть реализован классом
4%
Класс с только статическими методами
😁8👀3❤2🔥1
Атрибуты сервлетов используются для передачи данных между сервлетами, JSP и другими компонентами в рамках одного запроса, сессии или контекста приложения.
1️⃣ Атрибуты запроса (Request Attributes):
Используются: Для передачи данных между сервлетами и JSP в рамках одного запроса.
Методы:
request.setAttribute("name", value), request.getAttribute("name"). request.setAttribute("message", "Hello");
RequestDispatcher dispatcher = request.getRequestDispatcher("otherServlet");
dispatcher.forward(request, response);
2️⃣ Атрибуты сессии (Session Attributes):
Используются: Для хранения данных на время сессии пользователя.
Методы:
session.setAttribute("name", value), session.getAttribute("name").HttpSession session = request.getSession();
session.setAttribute("user", "JohnDoe");
3️⃣ Атрибуты контекста (Context Attributes):
Используются: Для данных, доступных всем сервлетам и JSP в приложении.
Методы:
context.setAttribute("name", value), context.getAttribute("name").ServletContext context = getServletContext();
context.setAttribute("globalData", "Important Data");
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯2🔥1
GenericServlet и HttpServlet — это два класса в Java Servlet API, которые служат основой для создания сервлетов. Они различаются по своему предназначению и областям применения.Servlet и может быть использован для создания сервлетов, работающих с любыми протоколами, не ограничиваясь HTTP.GenericServlet и добавляет методы, специфичные для обработки HTTP-запросов.init(), service(), destroy(), getServletConfig(), и getServletInfo(). public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
}
doGet(), doPost(), doPut(), doDelete(), и doHead(). public class HttpServlet extends GenericServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
// Другие методы...
}
service(), который должен обрабатывать все виды запросов. public class MyGenericServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// Обработка запросов
}
}
public class MyHttpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Обработка GET-запроса
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Обработка POST-запроса
}
}
GenericServlet — базовый класс для создания сервлетов, работающих с любыми протоколами, требует реализации метода service().HttpServlet — специализированный класс для HTTP-сервлетов, предоставляет методы для обработки конкретных типов HTTP-запросов (GET, POST и т.д.), что упрощает разработку веб-приложений.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤯1
Anonymous Quiz
91%
Краткий способ написания анонимных классов
3%
Способ создания новых классов
4%
Способ оптимизации памяти
2%
Способ работы с базами данных
👍4❤2
Класс
HttpServlet объявлен как абстрактный, потому что он предназначен для предоставления базовой функциональности для создания HTTP-сервлетов, но не должен использоваться напрямую. Вместо этого разработчики должны расширять этот класс и переопределять методы, такие как doGet(), doPost(), doPut(), и т.д., для реализации конкретного поведения сервлета. Вот основные причины, почему HttpServlet объявлен абстрактным:HttpServlet предоставляет базовую реализацию методов, необходимых для обработки HTTP-запросов. Он реализует метод service(), который определяет логику маршрутизации запросов к соответствующим методам (doGet(), doPost(), и т.д.), но сами методы оставляет для переопределения.doGet(), doPost() и другие объявлены как защищенные и пустые. Это означает, что при создании нового HTTP-сервлета разработчик должен явно переопределить хотя бы один из этих методов для реализации необходимой логики. public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Реализация обработки GET-запросов
}
}HttpServlet абстрактным предотвращает его прямое инстанцирование. Это делает невозможным создание экземпляра HttpServlet без предоставления конкретной реализации методов обработки запросов.HttpServlet servlet = new HttpServlet(); // Ошибка, так как HttpServlet абстрактный
HttpServlet разработан с учетом того, что его будут расширять. Объявление класса абстрактным подчеркивает, что он предназначен для расширения, а не для использования как есть.HttpServlet и переопределяя необходимые методы.import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyHttpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
response.getWriter().println("<h1>Hello, World!</h1>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
// Реализация обработки POST-запросов
}
}
Класс
HttpServlet объявлен абстрактным, чтобы обеспечить базовую функциональность для обработки HTTP-запросов, принудить разработчиков переопределять конкретные методы для создания своих собственных сервлетов и предотвратить создание экземпляров базового класса без реализации конкретной логики.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤯1
Anonymous Quiz
88%
Создание методов с одинаковым именем, но разными параметрами
3%
Создание методов с одинаковым именем и параметрами
8%
Переопределение методов в подклассах
1%
Использование методов из интерфейсов
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🤯1
Anonymous Quiz
13%
Основана на массиве с динамическим расширением
7%
Основана на дереве с бинарным поиском
74%
Основана на хеш-таблице
6%
Основана на двусвязном списке
😁11🤯9👍2❤1
Метод HTTP, который не является неизменяемым, — это POST.
<form action="/submit" method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">Submit</button>
</form>
Метод POST не является неизменяемым, так как он используется для операций, изменяющих состояние сервера, таких как создание или обновление ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤1
Anonymous Quiz
30%
Структура, в которой все исключения наследуются от класса Exception
4%
Структура, в которой все исключения наследуются от класса Error
3%
Структура, в которой все исключения наследуются от класса RuntimeException
63%
Структура, в которой все исключения наследуются от класса Throwable
👍4❤3
<form action="/search" method="get">
<input type="text" name="query">
<button type="submit">Search</button>
</form>
<form action="/submit" method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">Submit</button>
</form>
fetch('/update', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ id: 1, name: 'Updated Name' })
}); fetch('/delete/1', {
method: 'DELETE'
}); fetch('/update', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ name: 'Partially Updated Name' })
}); fetch('/resource', {
method: 'OPTIONS'
}); Методы отправки данных с клиента на сервер включают GET, POST, PUT, DELETE, PATCH и OPTIONS. Каждый из них используется для различных целей: от получения данных до создания, обновления и удаления ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍6
Anonymous Quiz
95%
Указывает, что метод переопределяет метод суперкласса
2%
Указывает, что метод является абстрактным
2%
Указывает, что метод не может быть переопределен
1%
Указывает, что метод является статическим
🤯14👍4😁1
<form action="/search" method="get">
<input type="text" name="query">
<button type="submit">Search</button>
</form>
https://example.com/search?query=something<form action="/submit" method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">Submit</button>
</form>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5❤2
Anonymous Quiz
91%
Контейнер для классов и интерфейсов
2%
Контейнер для методов и полей
6%
Контейнер для объектов и экземпляров
1%
Контейнер для констант и переменных
🤯19😁5👍3👀2🔥1
PrintWriter и ServletOutputStream — это два класса в Java Servlet API, используемых для записи данных в ответ сервлета, но они имеют разные предназначения и используются в разных ситуациях.Тип данных:
Применение:
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body><h1>Hello, World!</h1></body></html>"); response.setContentType("application/pdf");
ServletOutputStream out = response.getOutputStream();
byte[] pdfData = ...; // получить PDF данные
out.write(pdfData);Комбинирование:
ServletOutputStream в одном запросе, так как оба метода открывают ответный поток в разных режимах (символьный и байтовый).PrintWriter по той же причине.Методы получения:
Использование
PrintWriter:import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
public class TextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body><h1>Hello, World!</h1></body></html>");
}
}
Использование
ServletOutputStream:import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;
public class BinaryServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/pdf");
ServletOutputStream out = response.getOutputStream();
byte[] pdfData = ...; // получить PDF данные
out.write(pdfData);
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯1