пример с maven chatgpt
Давайте создадим простой проект с использованием JSP и JSTL, который включает условие и цикл. Мы будем использовать Maven для управления зависимостями и сборки проекта.
1. Создание Maven-проекта
Откройте терминал и выполните команду для создания нового Maven-проекта:
mvn archetype:generate -DgroupId=com.example -DartifactId=JSPExample -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
Эта команда создаст структуру проекта в каталоге JSPExample
.
2. Конфигурация pom.xml
Откройте файл pom.xml
и добавьте JSTL как зависимость:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>JSPExample</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>JSPExample Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- JSTL Dependency -->
<!-- <dependency> -->
<!-- <groupId>javax.servlet</groupId> -->
<!-- <artifactId>jstl</artifactId> -->
<!-- <version>1.2</version> -->
<!-- </dependency> -->
<!-- <dependency> -->
<!-- <groupId>javax.servlet</groupId> -->
<!-- <artifactId>javax.servlet-api</artifactId> -->
<!-- <version>4.0.1</version> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>jakarta.servlet.jsp.jstl</groupId> -->
<!-- <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> -->
<!-- <version>2.0.0</version> -->
<!-- </dependency> -->
<!-- <dependency> -->
<!-- <groupId>org.glassfish.web</groupId> -->
<!-- <artifactId>jakarta.servlet.jsp.jstl</artifactId> -->
<!-- <version>2.0.0</version> -->
<!-- </dependency> -->
</dependencies>
<build>
<finalName>JSPExample</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
3. Создание JSP-файла с JSTL
Создайте файл index.jsp
в каталоге src/main/webapp
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>JSP JSTL Example</title>
</head>
<body>
<h2>Пример использования JSTL с условием и циклом</h2>
<!-- Условие JSTL -->
<c:choose>
<c:when test="${param.name != null}">
<p>Привет, ${param.name}!</p>
</c:when>
<c:otherwise>
<p>Привет, гость!</p>
</c:otherwise>
</c:choose>
<!-- Цикл JSTL -->
<c:forEach var="item" items="${['Элемент 1', 'Элемент 2', 'Элемент 3']}">
<p>${item}</p>
</c:forEach>
</body>
</html>
В этом коде мы используем JSTL для проверки наличия параметра name
и для итерации по списку элементов.
4. Сборка и развертывание проекта
- В корневой папке проекта выполните команду Maven для сборки:
bash
mvn clean package
В результате будет создан файл JSPExample.war
в каталоге target
.
- Разверните этот WAR-файл в каталоге веб-приложений Tomcat, обычно это
/var/lib/tomcat/webapps
:
bash
sudo cp target/JSPExample.war /var/lib/tomcat/webapps/
- Перезапустите Tomcat:
bash
sudo systemctl restart tomcat
5. Проверка работы приложения
Перейдите в браузере по адресу http://localhost:8080/JSPExample/index.jsp
.
Вы должны увидеть сообщение «Привет, гость!» и список элементов. Если вы добавите параметр name
в URL, например, http://localhost:8080/JSPExample/index.jsp?name=Alex
, приложение отобразит «Привет, Alex!».
Если JSTL выражения (${...}
) не интерпретируются, а просто отображаются как текст, это может указывать на то, что JSP не компилирует EL-выражения должным образом. Рассмотрим несколько причин и решений.
1. Включите поддержку Expression Language (EL) в web.xml
В некоторых версиях Tomcat или конфигурациях веб-приложения EL может быть отключен по умолчанию. Добавьте следующий параметр в файл web.xml
(если у вас его нет, создайте web.xml
в WEB-INF
):
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<jsp-config>
<el-ignored>false</el-ignored>
</jsp-config>
</web-app>
2. Проверьте версию и формат страницы JSP
Убедитесь, что index.jsp
начинается с декларации page
и указывает на кодировку UTF-8 (либо другой, если она вам нужна):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3. Убедитесь, что параметры передаются на страницу корректно
Для проверки, что параметр name
передается правильно, попробуйте ввести URL с параметром, например:
http://localhost:8080/JSPExample/index.jsp?name=UserName
Если JSP по-прежнему не обрабатывает EL выражения, это может указывать на проблему с настройкой компилятора JSP в Tomcat.