Skip to content

пример с 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. Сборка и развертывание проекта

  1. В корневой папке проекта выполните команду Maven для сборки:

bash mvn clean package

В результате будет создан файл JSPExample.war в каталоге target.

  1. Разверните этот WAR-файл в каталоге веб-приложений Tomcat, обычно это /var/lib/tomcat/webapps:

bash sudo cp target/JSPExample.war /var/lib/tomcat/webapps/

  1. Перезапустите 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.