Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
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.iss.onethod}Этот объект представляет параметры запроса (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="https://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
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥7
Они позволяют инкапсулировать повторяющуюся логику, улучшать читаемость кода и упрощать его поддержку. Пользовательские теги создаются с использованием Java и могут выполнять различные функции, такие как генерация динамического контента, выполнение сложных вычислений или обработка форм.
Это класс Java, который реализует интерфейс
Tag или расширяет один из классов базовой реализации, таких как TagSupport или BodyTagSupport. package com.example.tags;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;
public class HelloTag extends TagSupport {
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.print("Hello, " + name + "!");
} catch (IOException e) {
throw new JspException(e);
}
return SKIP_BODY; // Не обрабатываем тело тега
}
}
Это файл XML, который описывает теги и их атрибуты. Обычно он называется
taglib.tld и размещается в директории WEB-INF.<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib xmlns="https://java.sun.com/xml/ns/j2ee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee
https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>example</short-name>
<uri>https://www.example.com/tags</uri>
<tag>
<name>hello</name>
<tag-class>com.example.tags.HelloTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
</attribute>
</tag>
</taglib>
Необходимо импортировать их в JSP-страницу с помощью директивы
taglib и затем применять тег.<%@ taglib uri="https://www.example.com/tags" prefix="ex" %>
<html>
<body>
<ex:hello name="World"/>
</body>
</html>
Убедитесь, что ваши классы в соответствующих директориях (
WEB-INF/classes). Убедитесь, что файл taglib.tld находится в директории WEB-INF.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🔥3🤯2❤1
Напишем класс обработчика тега, который выводит персонализированное приветствие.
package com.example.tags;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;
public class GreetingTag extends TagSupport {
private String name;
// Сеттер для установки значения атрибута "name"
public void setName(String name) {
this.name = name;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
if (name != null && !name.isEmpty()) {
out.print("Hello, " + name + "!");
} else {
out.print("Hello, Guest!");
}
} catch (IOException e) {
throw new JspException(e);
}
return SKIP_BODY; // Не обрабатываем тело тега
}
}
Создадим файл
taglib.tld, описывающий наш тег.<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="https://java.sun.com/xml/ns/j2ee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee
https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>example</short-name>
<uri>https://www.example.com/tags</uri>
<tag>
<name>greeting</name>
<tag-class>com.example.tags.GreetingTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>false</required>
</attribute>
</tag>
</taglib>
Создадим JSP-страницу, на которой будем использовать наш пользовательский тег.
<%@ taglib uri="https://www.example.com/tags" prefix="ex" %>
<html>
<head>
<title>Custom Tag Example</title>
</head>
<body>
<h1>Using Custom Tag</h1>
<ex:greeting name="Alice"/>
<br>
<ex:greeting/>
</body>
</html>
Убедитесь, что файл
GreetingTag.class размещен в директории WEB-INF/classes/com/example/tags/. Убедитесь, что файл taglib.tld находится в директории WEB-INF.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
В JSP можно сделать перенос строки в HTML несколькими способами. Основные методы, которые включают использование стандартных HTML-тегов, предопределенных библиотек тегов JSP (например, JSTL) и создание собственных тегов.
Наиболее простой способ вставить перенос строки в HTML - это использовать тег
<br/>, который обозначает разрыв строки.<%
String text = "This is line 1.\nThis is line 2.\nThis is line 3.";
text = text.replace("\n", "<br/>");
%>
<%= text %>
JSTL (JavaServer Pages Standard Tag Library) предоставляет мощные инструменты для работы с текстом и данными. Мы можем использовать функции JSTL для замены символов новой строки на теги
<br/>.Подключите библиотеку JSTL
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="https://java.sun.com/jsp/jstl/functions" prefix="fn" %>
Используйте JSTL для замены символов новой строки
<%
String text = "This is line 1.\nThis is line 2.\nThis is line 3.";
%>
<c:out value="${fn:replace(text, '\n', '<br/>')}" escapeXml="false"/>
Если вам часто нужно делать переносы строк, имеет смысл создать пользовательский тег для этой задачи.
Создайте класс обработчика тега
package com.example.tags;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;
public class LineBreakTag extends TagSupport {
private String text;
public void setText(String text) {
this.text = text;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
if (text != null) {
text = text.replace("\n", "<br/>");
out.print(text);
}
} catch (IOException e) {
throw new JspException(e);
}
return SKIP_BODY;
}
}
Определите дескриптор тега (taglib.tld)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="https://java.sun.com/xml/ns/j2ee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee
https://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>example</short-name>
<uri>https://www.example.com/tags</uri>
<tag>
<name>lineBreak</name>
<tag-class>com.example.tags.LineBreakTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>text</name>
<required>true</required>
</attribute>
</tag>
</taglib>
Используйте пользовательский тег в JSP
<%@ taglib uri="https://www.example.com/tags" prefix="ex" %>
<html>
<head>
<title>Custom Line Break Tag Example</title>
</head>
<body>
<h1>Using Custom Line Break Tag</h1>
<ex:lineBreak text="This is line 1.\nThis is line 2.\nThis is line 3."/>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8
Стандартные JSP теги, такие как
<%@ page %>, <%@ include %>, <%@ taglib %>, а также теги JSTL (JavaServer Pages Standard Tag Library), уже встроены в JSP контейнер и готовы к использованию без дополнительной конфигурации. Это упрощает разработку и уменьшает количество необходимого конфигурационного кода.Современные JSP контейнеры (например, Apache Tomcat) автоматически распознают и обрабатывают стандартные теги JSP и JSTL без необходимости явного указания в
web.xml. Это позволяет избежать излишних конфигурационных шагов и сконцентрироваться на разработке бизнес-логики.Вместо конфигурации в
web.xml в современных Java веб-приложениях часто используются аннотации для определения сервлетов, фильтров и слушателей. Аннотации упрощают процесс конфигурации и делают код более чистым и читабельным.Стандартные теги JSP и JSTL были созданы для стандартизации и упрощения разработки JSP страниц. Они широко поддерживаются всеми контейнерами, что обеспечивает их правильную работу без дополнительной конфигурации.
В данном примере используется стандартная библиотека тегов JSTL (библиотека JSTL core). Благодаря встроенной поддержке JSTL в контейнере, нет необходимости указывать эту библиотеку в
web.xml.<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<c:if test="${not empty user}">
<p>Привет, ${user.name}!</p>
</c:if>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5