Anonymous Quiz
22%
public, private, protected, package
2%
public, private, internal, protected
74%
public, private, protected, default
1%
public, private, protected, internal
😁10👍2❤1
JSP Expression Language (EL) предоставляет набор неявных (внутренних) объектов, которые упрощают доступ к данным и их обработку в JSP страницах. Эти неявные объекты JSP EL различаются от неявных объектов JSP и обеспечивают доступ к контексту выполнения веб-приложения.
pageScope
Предоставляет доступ к атрибутам области видимости страницы (page scope).
<% pageContext.setAttribute("pageAttribute", "Page Scope Value"); %>
<p>Page Attribute: ${pageScope.pageAttribute}</p>requestScope
Предоставляет доступ к атрибутам области видимости запроса (request scope).
<% request.setAttribute("requestAttribute", "Request Scope Value"); %>
<p>Request Attribute: ${requestScope.requestAttribute}</p>sessionScope
Предоставляет доступ к атрибутам области видимости сессии (session scope).
<% session.setAttribute("sessionAttribute", "Session Scope Value"); %>
<p>Session Attribute: ${sessionScope.sessionAttribute}</p>applicationScope
Предоставляет доступ к атрибутам области видимости приложения (application scope).
<% application.setAttribute("applicationAttribute", "Application Scope Value"); %>
<p>Application Attribute: ${applicationScope.applicationAttribute}</p>param
Предоставляет доступ к параметрам запроса (query parameters) в виде строк.
<!-- URL: https://example.com/page.jsp?name=John -->
<p>Request Parameter: ${param.name}</p>
paramValues
Предоставляет доступ к параметрам запроса в виде массивов строк (для параметров с несколькими значениями).
<!-- URL: https://example.com/page.jsp?name=John&name=Doe -->
<p>Request Parameter Values: ${paramValues.name[0]}, ${paramValues.name[1]}</p>
header
Предоставляет доступ к заголовкам HTTP запроса в виде строк.
<p>User-Agent: ${header['User-Agent']}</p>headerValues
Предоставляет доступ к заголовкам HTTP запроса в виде массивов строк (для заголовков с несколькими значениями).
<p>Header Values: ${headerValues['Accept'][0]}, ${headerValues['Accept'][1]}</p>request, response, session, application).${...} и обеспечивают более чистый и понятный способ доступа к данным.request.getParameter("name")).pageScope, requestScope, sessionScope, и applicationScope, что позволяет легко различать источники данных.<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP Example</title>
</head>
<body>
<% request.setAttribute("attribute", "Request Scope Value"); %>
<p>Request Attribute: <%= request.getAttribute("attribute") %></p>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP EL Example</title>
</head>
<body>
<% request.setAttribute("attribute", "Request Scope Value"); %>
<p>Request Attribute: ${requestScope.attribute}</p>
</body>
</html>
Неявные объекты JSP EL (
pageScope, requestScope, sessionScope, applicationScope, param, paramValues, header, headerValues, cookie, initParam, pageContext) предоставляют удобный и чистый способ доступа к данным и контексту выполнения веб-приложения. В отличие от неявных объектов JSP, они обеспечивают более структурированный и читаемый подход к управлению данными и их обработке в JSP страницах.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🤯1
Anonymous Quiz
25%
Способность метода вызываться с разными параметрами
63%
Способность объекта принимать множество форм
8%
Способность класса наследовать несколько классов
3%
Способность переменной менять тип
😁8🤯5🤔3👍2
JSTL (JSP Standard Tag Library) — это библиотека стандартных тегов для JSP (JavaServer Pages), которая предоставляет набор общих функций для JSP страниц. JSTL упрощает разработку веб-приложений, уменьшая количество Java-кода, который нужно писать в JSP, за счёт использования стандартных тегов для выполнения различных задач.
Основные функции:
<%@ taglib uri="htp://jav.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="htp://jav.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>Пример JSTL</title>
</head>
<body>
<h2>Пример использования циклов и условий JSTL</h2>
<c:choose>
<c:when test="${user != null}">
<p>Добро пожаловать, ${user.name}!</p>
</c:when>
<c:otherwise>
<p>Пожалуйста, войдите в систему.</p>
</c:otherwise>
</c:choose>
<h2>Пример форматирования даты JSTL</h2>
<fmt:formatDate value="${currentDate}" pattern="yyyy-MM-dd" />
<h2>Пример итерации по коллекции JSTL</h2>
<ul>
<c:forEach var="item" items="${items}">
<li>${item}</li>
</c:forEach>
</ul>
</body>
</html>
JSTL позволяет писать меньше Java-кода и использовать более понятные и удобные теги для выполнения часто встречающихся задач в JSP.
🔥
🔒
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Anonymous Quiz
85%
clone()
12%
copy()
1%
replicate()
2%
duplicate()
👍7❤1
Библиотека JSP Standard Tag Library (JSTL) состоит из нескольких групп тегов, каждая из которых предназначена для выполнения определенных типов задач.
Основные теги JSTL предоставляют основные функциональные возможности, такие как итерации, условные конструкции, управление переменными и другие базовые операции.
<c:out value="${user.name}" />
<c:if>: Выполняет условную проверку и отображает содержимое, если условие истинно. <c:if test="${user.loggedIn}">
<p>Welcome, ${user.name}!</p>
</c:if>
<c:choose>,<c:choose>
<c:when test="${user.role == 'admin'}">
<p>Admin Section</p>
</c:when>
<c:otherwise>
<p>User Section</p>
</c:otherwise>
</c:choose>
<c:forEach var="item" items="${items}">
<p>${item}</p>
</c:forEach>Теги форматирования JSTL используются для форматирования текста, чисел, дат и выполнения интернационализации.
<fmt:formatNumber>: Форматирует число. <fmt:formatNumber value="${amount}" type="currency" />
<fmt:formatDate>: Форматирует дату. <fmt:formatDate value="${date}" pattern="yyyy-MM-dd" />
<fmt:parseNumber>: Парсит строку в число.<fmt:parseNumber var="number" value="1,234.56" type="number" />
Позволяют выполнять запросы к базе данных и обрабатывать результаты.
<sql:setDataSource>: Устанавливает источник данных.<sql:setDataSource var="dataSource" driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"
user="root" password="password" />
<sql:query dataSource="${dataSource}" var="result">
SELECT * FROM users
</sql:query>
<sql:update>: Выполняет SQL-операцию обновления (INSERT, UPDATE, DELETE). <sql:update dataSource="${dataSource}">
UPDATE users SET name='John Doe' WHERE id=1
</sql:update>Используются для работы с XML-документами, таких как парсинг, трансформация и выполнение XPath-запросов.
<x:parse>: Парсит XML-документ. <x:parse var="doc" xml="${xmlContent}" />
Также предоставляет набор функций для выполнения различных операций на строках, коллекциях и других данных.
${fn:contains(user.name, 'John')}
fn:containsIgnoreCase: Проверяет, содержит ли строка подстроку без учета регистра. ${fn:containsIgnoreCase(user.name, 'john')} fn:endsWith: Проверяет, заканчивается ли строка заданной подстрокой. ${fn:endsWith(user.name, 'Doe')}Эти группы тегов JSTL помогают создавать более чистый, читабельный и поддерживаемый код в JSP страницах, облегчая выполнение распространённых задач и улучшая структуру веб-приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤯2
Anonymous Quiz
34%
Предварительная компиляция кода до выполнения
48%
Компиляция кода во время выполнения
5%
Компиляция кода во время написания
12%
Компиляция кода при запуске программы
👍3
Расширение функциональности JSP может быть достигнуто различными способами, включая использование сторонних библиотек, создание пользовательских тегов и теговых библиотек, а также интеграцию с другими Java фреймворками.
JavaServer Pages Standard Tag Library (JSTL)
JSTL предоставляет набор стандартных тегов для выполнения распространённых задач, таких как итерация, условные конструкции, работа с коллекциями, форматирование и интернационализация.
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<c:if test="${user.loggedIn}">
<p>Welcome, ${user.name}!</p>
</c:if>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd" />
<sql:query dataSource="${dataSource}" var="result">
SELECT * FROM users
</sql:query>
Пользовательские теги позволяют инкапсулировать повторяющийся код и функциональность в простые и переиспользуемые компоненты.
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="https://java.sun.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>custom</short-name>
<uri>https://example.com/custom</uri>
<tag>
<name>hello</name>
<tag-class>com.example.tags.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
package com.example.tags;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
public class HelloTag extends TagSupport {
@Override
public int doStartTag() throws JspException {
try {
pageContext.getOut().print("Hello, World!");
} catch (IOException e) {
throw new JspException("Error: " + e.getMessage());
}
return SKIP_BODY;
}
}
<%@ taglib uri="https://example.com/custom" prefix="custom" %>
<custom:hello />
Использование Spring MVC
Это мощный веб-фреймворк, который упрощает создание веб-приложений с разделением логики и представления. Он позволяет использовать контроллеры для обработки запросов и передачу данных на JSP страницы.
@Controller
public class UserController {
@GetMapping("/user")
public String getUser(Model model) {
User user = new User("John Doe");
model.addAttribute("user", user);
return "user";
}
}
<%@ taglib uri="https://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
<title>User Page</title>
</head>
<body>
<h1>Welcome, <spring:eval expression="user.name" /></h1>
</body>
</html>
Эти методы помогут сделать код более чистым, поддерживаемым и функциональным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👀2❤1
Anonymous Quiz
10%
Интерфейсы могут содержать поля
65%
Абстрактные классы могут реализовывать методы
8%
Интерфейсы могут содержать конструкторы
16%
Абстрактные классы не могут наследоваться
🤔12🤯4👀2👾2❤1
Для переноса строки в HTML с помощью JSP можно использовать несколько методов, включая непосредственно HTML теги, JSP Expression Language (EL) и JSTL (JavaServer Pages Standard Tag Library).
Самый простой способ сделать перенос строки в HTML — использовать тег
<br>.<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Line Break Example</title>
</head>
<body>
<p>This is line 1.<br>This is line 2.</p>
</body>
</html>
Если получаете строку из бэкэнда и хотите вставить переносы строк, можно преобразовать символы новой строки (
\n) в HTML тег <br>.<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>EL Line Break Example</title>
</head>
<body>
<%
String text = "This is line 1.\nThis is line 2.";
request.setAttribute("text", text);
%>
<p>${fn:replace(text, '\n', '<br>')}</p>
</body>
</html>
c:forEachМожно разделить строку на части и вывести каждую часть в отдельном абзаце или строке.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>JSTL Line Break Example</title>
</head>
<body>
<%
String text = "This is line 1.\nThis is line 2.\nThis is line 3.";
request.setAttribute("text", text);
%>
<c:forEach var="line" items="${fn:split(text, '\n')}">
<p>${line}</p>
</c:forEach>
</body>
</html>
pre тегаДля отображения многострочного текста без необходимости замены символов новой строки можно использовать HTML тег
<pre>.<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Preformatted Text Example</title>
</head>
<body>
<%
String text = "This is line 1.\nThis is line 2.\nThis is line 3.";
request.setAttribute("text", text);
%>
<pre>${text}</pre>
</body>
</html>
Также можно создать пользовательский метод в классе Java, который будет заменять символы новой строки на теги
<br>, и использовать его в JSP странице.package com.example.util;
public class StringUtil {
public static String convertNewlinesToHtml(String text) {
if (text == null) {
return "";
}
return text.replace("\n", "<br>");
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.example.util.StringUtil" %>
<html>
<head>
<title>Custom Method Line Break Example</title>
</head>
<body>
<%
String text = "This is line 1.\nThis is line 2.";
%>
<p><%= StringUtil.convertNewlinesToHtml(text) %></p>
</body>
</html>
<br> с помощью функции fn:replace. c:forEach: Разделение текста на строки и вывод каждой строки отдельно. <pre>: Для отображения многострочного текста без изменений.<br>.Каждый из этих методов имеет свои преимущества и используется в зависимости от конкретных требований и контекста задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Anonymous Quiz
11%
Типы переменных определяются во время выполнения
80%
Типы переменных определяются во время компиляции
2%
Типы переменных могут изменяться во время выполнения
6%
Типы переменных могут не указываться
🔥3
Конфигурирование стандартных JSP тегов в
web.xml не требуется по нескольким причинам. Основная причина заключается в том, что стандартные теги JSP, такие как JSTL (JavaServer Pages Standard Tag Library), уже поддерживаются контейнером сервлетов, и их использование упрощается с помощью декларативного подхода в самих страницах.<%@ taglib %>. Это упрощает процесс и устраняет необходимость дополнительных настроек в web.xml.<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
web.xml приводит к дублированию информации, поскольку теги все равно придется подключать в каждой JSP странице. Это может усложнить поддержку и увеличение риска несоответствий между конфигурацией и реальным использованием.<%@ taglib %>, что является стандартным и рекомендуемым способом подключения. Это обеспечивает совместимость и переносимость кода между различными сервлет-контейнерами.<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>JSTL Core Tags Example</title>
</head>
<body>
<c:set var="user" value="John Doe" />
<c:if test="${not empty user}">
<p>Welcome, ${user}!</p>
</c:if>
</body>
</html>
<%@ taglib uri="https://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL Formatting Tags Example</title>
</head>
<body>
<fmt:formatDate value="${pageContext.request.time}" pattern="yyyy-MM-dd HH:mm:ss" var="formattedDate" />
<p>Current Date and Time: ${formattedDate}</p>
</body>
</html>
Конфигурирование стандартных JSP тегов в
web.xml не требуется, потому что:Таким образом, использование стандартных тегов напрямую в JSP страницах является более простым, понятным и поддерживаемым подходом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
10%
Копия класса
81%
Отдельный представитель класса
2%
Метод класса
6%
Атрибут класса
🤔19🤯7❤2😁2👍1
Обработка ошибок на JSP страницах важна для обеспечения хорошего пользовательского опыта и для предотвращения раскрытия конфиденциальной информации о вашем веб-приложении. Существует несколько способов обработки ошибок в JSP, включая использование специальных страниц обработки ошибок, директив JSP и конфигурации в
web.xml. errorPage и isErrorPage в JSPerrorPageПозволяет указывать страницу, на которую будет перенаправлен пользователь в случае возникновения ошибки на текущей странице.
<%@ page errorPage="error.jsp" %>
<%
// Провоцирование ошибки для демонстрации
int result = 10 / 0;
%>
isErrorPageУказывается на странице, которая будет использоваться для обработки ошибок. На этой странице доступен неявный объект
exception.<%@ page isErrorPage="true" %>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<h1>An error occurred</h1>
<p>Error Details: ${exception.message}</p>
</body>
</html>
web.xmlМожно настроить страницы обработки ошибок для различных типов исключений или статус-кодов HTTP в файле конфигурации
web.xml.<web-app>
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/error.jsp</location>
</error-page>
</web-app>
Предоставляет тег
<c:catch> для обработки исключений в JSP страницах.<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>JSTL Error Handling Example</title>
</head>
<body>
<c:catch var="error">
<%
int result = 10 / 0; // Провоцирование ошибки
%>
</c:catch>
<c:if test="${not empty error}">
<p>Error occurred: ${error}</p>
</c:if>
</body>
</html>
Можно создать фильтр, который будет перехватывать ошибки и перенаправлять пользователя на страницу обработки ошибок.
package com.example.filters;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ErrorFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
// Инициализация фильтра (если необходимо)
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
try {
chain.doFilter(request, response);
} catch (Throwable t) {
((HttpServletResponse) response).sendRedirect("error.jsp");
}
}
public void destroy() {
// Очистка ресурсов (если необходимо)
}
}
Для отслеживания и анализа ошибок можно настроить логирование.
<%@ page import="java.util.logging.*" %>
<%
Logger logger = Logger.getLogger("MyAppLogger");
try {
int result = 10 / 0; // Провоцирование ошибки
} catch (Exception e) {
logger.log(Level.SEVERE, "Error occurred", e);
throw e;
}
%>
Для обработки ошибок в JSP страницах можно использовать различные методы:
exception. web.xml: Настройка страниц обработки ошибок для различных типов исключений и статус-кодов HTTP. <c:catch>: Обработка исключений непосредственно в JSP странице.Эти методы позволяют эффективно обрабатывать ошибки, обеспечивая хороший пользовательский опыт и защищая ваше приложение от раскрытия конфиденциальной информации.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1😁1👀1
Anonymous Quiz
12%
add(), remove(), update()
62%
compute(), computeIfAbsent(), computeIfPresent()
8%
insert(), replace(), delete()
18%
find(), search(), sort()
🤯20😁5❤2
ServletContext представляет собой интерфейс в Java Servlet API, который позволяет сервлетам взаимодействовать с веб-сервером и обмениваться данными между собой. Давайте разберем это понятие более детально:ServletContext предоставляет возможность сервлетам обмениваться данными друг с другом. Это полезно, когда нужно сохранить общие данные, доступные всем сервлетам в приложении.ServletContext можно получать параметры конфигурации, заданные в файле web.xml. Эти параметры могут быть использованы для настройки сервлетов.ServletContext позволяет получить доступ к статическим ресурсам, таким как HTML, изображения, файлы CSS и JavaScript, которые находятся в контексте веб-приложения.ServletContext можно регистрировать слушателей (Listeners) для отслеживания событий в веб-приложении, а также управлять атрибутами, доступными всему приложению.Когда веб-приложение загружается, сервер создает объект
ServletContext для этого приложения. Каждый сервлет может получить доступ к этому объекту через метод getServletContext().import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ExampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Получаем объект ServletContext
ServletContext context = getServletContext();
// Получаем параметр конфигурации из web.xml
String paramValue = context.getInitParameter("configParam");
// Устанавливаем атрибут в ServletContext
context.setAttribute("sharedAttribute", "Some Value");
// Получаем атрибут из ServletContext
String sharedValue = (String) context.getAttribute("sharedAttribute");
// Используем параметры и атрибуты
response.getWriter().println("Config Param: " + paramValue);
response.getWriter().println("Shared Attribute: " + sharedValue);
}
}
context.setAttribute("attrName", "attrValue");
String attrValue = (String) context.getAttribute("attrName");
String configValue = context.getInitParameter("paramName");
context.addListener(new MyListener());
InputStream inputStream = context.getResourceAsStream("/WEB-INF/config.properties");
ServletContext — это интерфейс, который предоставляет сервлетам доступ к параметрам конфигурации, общим данным и ресурсам веб-приложения, а также позволяет обмениваться данными между сервлетами.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤯2❤1
getInitParameter(String name): Глобальные параметры.getAttribute(String name), setAttribute(String name, Object object): Управление атрибутами.getInitParameter(String name): Параметры инициализации сервлета.getServletName(): Имя сервлета.ServletContext предоставляет глобальный контекст для всего приложения.ServletConfig предоставляет конфигурацию для одного сервлета.ServletContext — для всего приложения, ServletConfig — для одного сервлета.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤯2
Anonymous Quiz
72%
Обычные, Абстрактные, Финализированные, Интерфейсы, Перечисления, Вложенные
26%
Обычные, Абстрактные, Приватные, Публичные, Защищенные
1%
Основные, Вторичные, Вспомогательные, Обобщенные
2%
Простые, Сложные, Встроенные, Внешние
😁14🤔4👀2👾2❤1
Интерфейс
ServletResponse в Java Servlet API используется для создания и отправки ответа клиенту (например, браузеру) от сервлета. Он предоставляет методы для настройки ответного сообщения, включая контент, заголовки и выходные данные.text/html, application/json и т.д.PrintWriter и ServletOutputStream. response.setContentType("text/html");
PrintWriter для записи текстовых данных в ответ.PrintWriter out = response.getWriter();
out.println("<html><body>Hello, World!</body></html>");
ServletOutputStream для записи бинарных данных в ответ.ServletOutputStream out = response.getOutputStream();
out.write(byteArray);
response.setCharacterEncoding("UTF-8");
response.setContentLength(content.length());
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ResponseServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Установка типа контента и кодировки
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
// Получение объекта PrintWriter для записи текста
PrintWriter out = response.getWriter();
// Запись HTML-ответа
out.println("<html>");
out.println("<head><title>Sample Response</title></head>");
out.println("<body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
Интерфейс
ServletResponse нужен для настройки и отправки HTTP-ответов клиенту, позволяя устанавливать тип контента, кодировку, заголовки и записывать данные в ответ.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👀1
Anonymous Quiz
3%
LinkedList основан на массиве, ArrayList на списке
47%
ArrayList основан на массиве, LinkedList на списке
10%
LinkedList быстрее для случайного доступа, ArrayList для вставки/удаления
40%
ArrayList быстрее для случайного доступа, LinkedList для вставки/удаления
😁37🤔10👍1