Spring Boot Index JSP работает на локальном хосте, но не найден на сервере Linux - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю приложение Spring Boot. Он успешно работает на моем локальном хосте. Но при развертывании и запуске jar-файла на странице индекса linux centos server не удается найти (получаю: произошла непредвиденная ошибка (type = Not Found, status = 404). /WEB-INF/jsp/index.jsp)

Это моя структура кода и application.properties:

структура кода

, а вот мои зависимости pom.xml:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.1.0.jre8</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>




    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

1 Ответ

0 голосов
/ 06 ноября 2019

Springboot и jsp не работают должным образом с упаковкой банок из-за жестко закодированного шаблона в tomcat. Итак, предпочтительнее использовать war вместе с springboot, если вы используете jsp в качестве рендера представления и развертывания в tomcat.

Проблема в том, что при использованииjar для развертывания приложения springboot файлы jsp не будут присутствовать в tomcat, и при попытке обработать запрос вы получите 404 PAGE NOT FOUND . Это происходит из-за упаковки jar, из-за того, что jsp-файлы не копируются из папки WEB-INF. Если вы храните jsp-файлы в папке META-INF/resources, а jar-файл используется в качестве упаковки, это должно сработать. Понятно, что предпочтительно использовать war в качестве упаковки вместе с jsp.

С Jetty и Tomcat это должно работать, если вы используете упаковку war. Исполняемая война будет работать при запуске с java -jar, а также будет развернута в любом стандартном контейнере. JSP не поддерживаются при использовании исполняемого файла jar.

Spring Doc

Related Post: Почему загрузка Spring не поддерживает jsp, хотя он может отображатьстраница, если мы добавим правильную ссылку на банку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...