Apache Tomcat 10 согласно официальной документации реализует спецификацию Java Server Pages 2.3. Немного староватая спецификация, так как уже есть 3.0, но всё же неплохо:
1 2 3 4 5 6 |
<dependency> <groupId>jakarta.servlet.jsp</groupId> <artifactId>jakarta.servlet.jsp-api</artifactId> <version>2.3.6</version> <scope>provided</scope> </dependency> |
Обратите внимание, что scope указан provided, что означает, что зависимость будет доступна в окружении (в Apache Tomcat она уже будет), когда проект будет запущен, её не нужно отдельно копировать в зависимости.
Или для Gradle:
1 |
compileOnly group: 'jakarta.servlet.jsp', name: 'jakarta.servlet.jsp-api', version: '2.3.6' |
Но что же с JSTL? Вот тут-то совсем печально. Apache Tomcat предоставляет реализацию только спецификации JSTL 1.2, причем по умолчанию он не включает в себя эту библиотеку. Вы можете либо скачать её сами и положить в каталог lib у Apache Tomcat, либо подключить как зависимость в своём проекте.
Пример подключения зависимости Apache Taglibs для Maven:
1 2 3 4 5 |
<dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> |
Пример подключения зависимости Apache Taglibs для Gradle:
1 |
implementation group: 'org.apache.taglibs', name: 'taglibs-standard-impl', version: '1.2.5' |
Но здесь возникнет проблема: Spring Framework 6, похоже, не может работать с такой древней библиотекой как Apache Taglibs 1.2.5, у меня никак не удалось его заставить это сделать.
Для того чтобы наш проект на Spring Framework хостился в Apache Tomcat и работал с JSTL, нам придётся подключить реализацию этой спецификации, например, от GlassFish:
1 2 3 4 5 |
<dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>2.0.0</version> </dependency> |
Или в случае с Gradle:
1 |
implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '2.0.0' |
Аналог в магии примерно такой:
Если раньше когда творишь заклинание, нужно было бросить в эликсир зелёный корень мандрагоры и произнести «заклинаю корнем мандрагоры», то внезапно (например, с другим котлом или другой поварёшкой), эти слова перестали работать и теперь нужно произнести «заклинаю зелёной мандрагорою» — хотя она и так зелёная и это как бы подразумевается рецептом эликсира.