Anonymous Quiz
19%
InputStream
8%
OutputStream
49%
Reader
24%
ByteStream
👍5🤯5
Упрощенная настройка сервлетов, фильтров и слушателей без
web.xml. Примеры: @WebServlet, @WebFilter, @WebListener.Позволяет сервлетам обрабатывать запросы асинхронно. Пример:
request.startAsync().Программное добавление сервлетов, фильтров и слушателей. Пример:
ServletContext.addServlet().Встроенная поддержка для загрузки файлов через сервлеты. Пример:
@MultipartConfig.Объявление ролей и разрешений в аннотациях. Пример:
@DeclareRoles, @RolesAllowed.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👀1
Anonymous Quiz
2%
Appendable
8%
Readable
68%
CharSequence
22%
StringBuilder
😁8👍1
Отправка имени пользователя и пароля в Base64. Конфигурация в
web.xml:<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Protected Area</realm-name>
</login-config>
Хеширование учетных данных для безопасности. Конфигурация в
web.xml:<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>Protected Area</realm-name>
</login-config>
Использование HTML-форм для ввода учетных данных. Конфигурация в
web.xml:<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
Использование клиентских SSL-сертификатов. Конфигурация в
web.xml:<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
Реализация собственной логики через сервлеты и фильтры. Пример фильтра:
public class AuthenticationFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpSession session = httpRequest.getSession(false);
if (session != null && session.getAttribute("user") != null) {
chain.doFilter(request, response);
} else {
httpRequest.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯2❤1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍9👀2🤔1
Java Server Pages (JSP) — это технология для создания динамических веб-страниц с использованием Java. JSP позволяет смешивать HTML с Java-кодом для генерации динамического контента на сервере.
Вставка Java-кода в HTML-страницы.
Скриплеты: <% ... %>
Выражения: <%= ... %>
Директивы: <%@ ... %>
Декларации: <%! ... %>
Поддержка использования JavaBeans для разделения логики и представления.
Расширение функциональности через собственные теги.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🎉1👾1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥2
JSP (JavaServer Pages) используется для создания динамических веб-страниц с помощью Java. Он позволяет внедрять Java-код прямо в HTML, упрощая генерацию контента на стороне сервера, например, для обработки форм, взаимодействия с базами данных и динамического отображения информации. JSP удобно использовать в проектах на Java для интеграции логики приложения с пользовательским интерфейсом.
JSP позволяет генерировать HTML-код динамически на основе данных и логики, определенной на сервере. Это означает, что содержание веб-страницы может изменяться в зависимости от запросов пользователя, данных из базы данных или других факторов.
JSP тесно интегрирован с Java, что позволяет использовать все возможности Java в веб-приложениях. Разработчики могут использовать существующие Java-классы и библиотеки, что ускоряет разработку и уменьшает количество кода.
С помощью JSP можно отделить бизнес-логику от презентационного слоя. Логика может быть реализована в сервлетах или JavaBeans, а JSP используется для отображения данных. Это упрощает поддержку и развитие приложения.
JSP хорошо интегрируется с Model-View-Controller (MVC) архитектурой. JSP используется для представления (View), сервлеты или контроллеры обрабатывают запросы (Controller), а бизнес-логика и данные находятся в моделях (Model).
Разработчики, знакомые с HTML, могут легко начать использовать JSP, добавляя динамическое содержимое с помощью Java. Это снижает порог входа для создания динамических веб-страниц.
JSP поддерживает стандартные теги JSP (например, скриплеты, выражения) и позволяет создавать собственные теги. Это помогает повторно использовать код и упрощает создание сложных страниц.
Простой JSP файл
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<noscript>Example JSP</noscript>
</head>
<body>
<h1>Welcome to JSP</h1>
<p>The current date and time is: <%= new java.util.Date() %></p>
</body>
</html>
Использование JavaBeans в JSP
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="com.example.User" %>
<html>
<head>
<noscript>Example JSP with JavaBean</noscript>
</head>
<body>
<jsp:useBean id="user" class="com.example.User" scope="session"/>
<jsp:setProperty name="user" property="name" value="John Doe"/>
<h1>Welcome, <jsp:getProperty name="user" property="name"/>!</h1>
</body>
</html>
JSP страницы компилируются в сервлеты и могут быть кэшированы сервером, что улучшает производительность по сравнению с традиционными CGI-скриптами.
JSP позволяет использовать кастомные теги и таглайбы, что делает код более чистым и повторно используемым.
JSP интегрируется с различными библиотеками и фреймворками, такими как JSTL (JSP Standard Tag Library), что делает разработку более мощной и удобной.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥2❤1
Пользователь отправляет HTTP-запрос к серверу, запрашивая JSP страницу.
Веб-сервер перенаправляет запрос к контейнеру сервлетов (например, Tomcat).
Контейнер проверяет, была ли JSP страница изменена. Если изменена или запрашивается впервые, JSP компилируется в сервлет (Java-код).
Скомпилированный сервлет загружается и инициализируется.
Метод
service() сервлета обрабатывает HTTP-запрос. Java-код в JSP выполняется, генерируя HTML.Сгенерированный HTML отправляется обратно клиенту (браузеру).
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34👀1
В Java EL (Expression Language) операторы можно классифицировать на несколько типов в зависимости от их функциональности.
+ (сложение)- (вычитание)* (умножение)/ (деление)% (остаток от деления)${3 + 4} // результат: 7
${10 - 2} // результат: 8
${6 * 7} // результат: 42
${8 / 2} // результат: 4
${10 % 3} // результат: 1&& (логическое И)|| (логическое ИЛИ)! (логическое НЕ)${true && false} // результат: false
${true || false} // результат: true
${!true} // результат: false== (равенство)!= (неравенство)< (меньше)> (больше)<= (меньше или равно)>= (больше или равно)${5 == 5} // результат: true
${5 != 4} // результат: true
${3 < 4} // результат: true
${7 > 6} // результат: true
${4 <= 4} // результат: true
${8 >= 8} // результат: true?: (тернарный оператор)${(5 > 3) ? "Больше" : "Меньше"} // результат: "Больше". (точка) для доступа к свойствам и методам объекта[] (квадратные скобки) для доступа к элементам массивов и коллекций${user.name} // доступ к свойству name объекта user
${users[0]} // доступ к первому элементу массива или списка usersСтавь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👀4❤2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥3👀1
В JSP (JavaServer Pages) EL (Expression Language) предоставляет разработчикам простой способ доступа к данным и объектам в JSP-страницах. В JSP EL существуют несколько неявных, внутренних объектов, которые существенно облегчают работу с данными на серверной стороне. Вот основные из них и их отличия от стандартных JSP объектов:
Этот объект предоставляет доступ к различным областям (scopes) JSP-страницы: page, request, session и application.
pageContext используется для доступа к атрибутам и методам, которые относятся ко всей странице или конкретной области.${pageContext.request.method}Этот объект представляет параметры запроса (HTTP request parameters). Каждый параметр запроса доступен как свойство.
param используется для получения параметров формы или URL.${param.username}Похож на
param, но представляет параметры как массив значений. paramValues используется для доступа к параметрам, у которых может быть несколько значений (например, checkbox).${paramValues.options[0]}Этот объект представляет HTTP-заголовки запроса. Каждый заголовок доступен как свойство.
header используется для получения значений заголовков HTTP-запроса.${header["User-Agent"]}Похож на
header, но представляет заголовки как массив значений. headerValues используется для доступа к заголовкам с несколькими значениями.${headerValues["Accept-Language"][0]}Этот объект представляет куки браузера. Каждый куки доступен как свойство.
cookie используется для доступа к значениям куки.${cookie["sessionID"].value}Этот объект представляет параметры инициализации (context initialization parameters) веб-приложения.
initParam используется для доступа к параметрам инициализации, заданным в конфигурационном файле web.xml.${initParam["databaseURL"]}Эти объекты представляют атрибуты соответствующих областей (scope) — страницы, запроса, сессии и приложения. Они используются для доступа к атрибутам, заданным в этих областях.
${sessionScope.user}EL предоставляет более удобный и краткий способ доступа к данным по сравнению с традиционными объектами JSP, такими как
request, response, session и application.EL позволяет обращаться к атрибутам и параметрам как к свойствам, что упрощает синтаксис и делает код более читаемым.
В JSP EL не требуется явное приведение типов, что упрощает работу с данными.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯5👍1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥4
Это библиотека стандартных тегов для JSP (JavaServer Pages), которая предоставляет набор общих функций, которые разработчики часто используют в веб-приложениях.
Эти теги включают основные функции для управления потоком выполнения (например, условные операторы и циклы), а также для работы с URL, редиректами и параметрами.
<c:if> условное выполнение блока кода.<c:if test="${param.user != null}">
Привет, ${param.user}!
</c:if><c:forEach> итерация по коллекциям.<c:forEach var="item" items="${itemList}">
${item}
</c:forEach>Эти теги используются для форматирования и интернационализации данных, таких как даты, числа и сообщения.
<fmt:formatNumber> форматирование чисел.<fmt:formatNumber value="12345.67" type="currency" />
<fmt:message> вывод локализованного сообщения.<fmt:message key="welcome.message" />
Эти теги предоставляют простой способ выполнения SQL-запросов и работы с базами данных.
<sql:query> выполнение SQL-запроса.<sql:query var="result" dataSource="${dataSource}">
SELECT * FROM users
</sql:query>Эти теги используются для работы с XML-документами, их парсинга и преобразования.
<x:parse> парсинг XML-документа.<x:parse var="xmlDoc" xml="${xmlString}" /> <x:out> вывод содержимого XML-узла.<x:out select="$xmlDoc/root/element" />
Эти теги предоставляют набор полезных функций, таких как работа со строками.
<fn:length> определение длины строки или коллекции.${fn:length(myList)}<fn:contains> проверка, содержит ли строка указанную подстроку.${fn:contains(myString, 'substring')}Использование тегов вместо Java-кода улучшает читаемость JSP-страниц и делает их более понятными для разработчиков.
JSTL позволяет сократить количество Java-кода на странице, делая код более компактным и легко сопровождаемым.
Теги JSTL позволяют выделить общие функции в отдельные компоненты, которые можно многократно использовать в разных частях приложения.
Теги форматирования и работы с сообщениями упрощают процесс локализации веб-приложений.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤3
Эти теги предоставляют основные функции для управления потоком выполнения, работы с переменными, URL, редиректами и параметрами.
<c:out> – вывод значения выражения.<c:set> – установка значений переменных.<c:remove> – удаление атрибутов из областей видимости (scope).<c:catch> – перехват и обработка исключений.<c:if> – условное выполнение блока кода.<c:choose>, <c:when>, <c:otherwise> – конструкция для многозначного условия (аналог switch-case).<c:forEach> – итерация по коллекциям или массивам.<c:forTokens> – итерация по токенам строки.<c:import> – импорт содержимого из URL.<c:url> – создание URL с параметрами.<c:redirect> – перенаправление на другой URL.<c:param> – добавление параметров к URL.Эти теги используются для интернационализации и форматирования данных, таких как даты, числа и тексты.
<fmt:formatNumber> – форматирование чисел.<fmt:parseNumber> – разбор строк в числа.<fmt:formatDate> – форматирование дат.<fmt:parseDate> – разбор строк в даты.<fmt:bundle> – загрузка ресурса с локализованными сообщениями.<fmt:message> – вывод локализованного сообщения.<fmt:setLocale> – установка локали.<fmt:setBundle> – установка текущего набора ресурсов.<fmt:timeZone> – установка временной зоны.Эти теги предоставляют функциональность для работы с базами данных, выполнения SQL-запросов и обработки результатов.
<sql:setDataSource> – установка источника данных.<sql:query> – выполнение SQL-запроса.<sql:update> – выполнение SQL-обновления (INSERT, UPDATE, DELETE).<sql:param> – установка параметров для SQL-запросов.<sql:dateParam> – установка даты в SQL-запросах.<sql:transaction> – выполнение SQL-операций в транзакции.Эти теги используются для работы с XML-документами: их парсинга, модификации и отображения.
<x:parse> – парсинг XML-документа.<x:out> – вывод содержимого XML-узла.<x:set> – установка значений в XML-документе.<x:forEach> – итерация по XML-узлам.<x:transform> – преобразование XML-документа с использованием XSLT.Эти теги предоставляют набор полезных функций, таких как работа со строками и коллекциями.
<fn:contains> – проверка, содержит ли строка указанную подстроку.<fn:containsIgnoreCase> – проверка, содержит ли строка указанную подстроку без учёта регистра.<fn:endsWith> – проверка, заканчивается ли строка указанной подстрокой.<fn:startsWith> – проверка, начинается ли строка с указанной подстроки.<fn:escapeXml> – экранирование специальных символов в XML.<fn:join> – объединение элементов коллекции в строку с указанным разделителем.<fn:length> – определение длины строки или коллекции.<fn:replace> – замена всех вхождений подстроки на другую подстроку.<fn:split> – разбиение строки на массив по указанному разделителю.<fn:substring> – получение подстроки.<fn:substringAfter> – получение подстроки, которая следует за указанной подстрокой.<fn:substringBefore> – получение подстроки, которая предшествует указанной подстроке.<fn:toLowerCase> – преобразование строки к нижнему регистру.<fn:toUpperCase> – преобразование строки к верхнему регистру.<fn:trim> – удаление пробелов в начале и конце строки.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👾2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Программист — лекарство от больных тимлидов, тупых багов и тех самых митов в 10 утра ☠️
Здесь собирают лучшие мемы про айтишников, чтобы спасти вашу психику от died'осов на работе.
Идеально зачиллить вечерком и скинуть друзьям: @progeri
Здесь собирают лучшие мемы про айтишников, чтобы спасти вашу психику от died'осов на работе.
Идеально зачиллить вечерком и скинуть друзьям: @progeri
😁9
JSTL (JavaServer Pages Standard Tag Library): JSTL предоставляет общие функции, такие как циклы, условия, работа с XML и форматом даты.
Пользовательские теги: Вы можете создавать собственные теги для повторно используемой логики. Это помогает избежать повторения кода и улучшает читаемость JSP-страниц.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<ul>
<c:forEach var="item" items="${itemList}">
<li>${item}</li>
</c:forEach>
</ul>
Сервлеты: Можно расширить функциональность JSP, комбинируя их с сервлетами. Сервлеты могут обрабатывать сложную бизнес-логику и передавать результаты на JSP для отображения.
@WebServlet("/processData")
public class DataServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data = processData();
request.setAttribute("data", data);
request.getRequestDispatcher("/display.jsp").forward(request, response);
}
} Фильтры: Позволяют перехватывать запросы и ответы, модифицировать их, например, для аутентификации или логирования.
@WebFilter("/secure/*")
public class AuthFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// Проверка аутентификации
chain.doFilter(request, response);
}
} <jsp:include>: Включение других JSP-файлов или статических ресурсов. Это помогает повторно использовать компоненты и уменьшает дублирование кода.
<jsp:include page="header.jsp" />
<jsp:include page="footer.jsp" />
Apache Struts, Spring MVC: Эти фреймворки обеспечивают мощные возможности для создания веб-приложений с использованием JSP. Они упрощают управление запросами и представлениями, а также предоставляют интеграцию с различными компонентами Java EE.
Использование JavaBeans для хранения и манипулирования данными. Это способствует разделению бизнес-логики и представления.
<jsp:useBean id="user" class="com.example.User" scope="session"/>
<jsp:setProperty name="user" property="name" value="John Doe"/>
<p>Welcome, <jsp:getProperty name="user" property="name"/>!</p>
Добавление динамического взаимодействия с помощью AJAX и JavaScript. Это позволяет обновлять части страницы без полной перезагрузки, улучшая пользовательский опыт.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM