Подтвердить что ты не робот

Spring Загрузочный JSP 404

Я пытаюсь добавить страницу jsp в службу загрузки Spring. Моя проблема в том, что каждый раз, когда я пытаюсь перейти на эту страницу, у меня есть это:

Страница ошибки Whitelabel

В этом приложении нет явного сопоставления для /error, поэтому вы видите это как резерв.

Вторник 21 апр 23:16:00 EEST 2015 Появилась непредвиденная ошибка (type = Not Найдено, статус = 404). Нет доступных сообщений

Я добавил префикс и sufix в свой application.properties:

spring.view.prefix: /WEB-INF/jsp/
spring.view.suffix: .jsp

Это мой класс контроллера:

@Controller
public class MarkerController {
    @RequestMapping(value="/map")
    public String trafficSpy() {
        return "index";
    }
}

Мой класс приложения:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    private static Logger logger = Logger.getLogger(Application.class.getName());

    public static void main(String[] args) {
            logger.info("SPRING VERSION: " + SpringVersion.getVersion());
            SpringApplication.run(Application.class, args);
        }
}

И index.jsp:

<!DOCTYPE html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en">

<body>
    <h1>Hello, World!!!</h1>


    <p>JSTL URL: ${url}</p>
</body>

</html>

И это структура файла src:

├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── internetprogramming
│   │   │               └── myserver
│   │   │                   └── server
│   │   │                       ├── Application.java
│   │   │                       ├── config
│   │   │                       │   └── DatabaseConfig.java
│   │   │                       ├── controller
│   │   │                       │   └── MarkerController.java
│   │   │                       ├── dao
│   │   │                       │   ├── MarkerDaoImplementation.java
│   │   │                       │   └── MarkerDaoInterface.java
│   │   │                       ├── Marker.java
│   │   │                       └── service
│   │   │                           ├── MarkerServiceImplementation.java
│   │   │                           └── MarkerServiceInterface.java
│   │   ├── resources
│   │   │   └── application.properties
│   │   └── webapp
│   │       └── WEB-INF
│   │           └── jsp
│   │               └── index.jsp
4b9b3361

Ответ 1

Убедитесь, что у вас есть jasper и jstl в списке зависимостей:

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

Вот рабочий проект стартера - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp

Ответ 2

В новых версиях Spring следующее должно быть помещено в файл application.properties:

spring.mvc.view.prefix =/WEB-INF/jsp/
spring.mvc.view.suffix =.jsp

Кроме того, файлы JSP должны быть помещены в src/main/resources/META-INF/resources/WEB-INF/jsp

Ответ 3

Моя проблема заключалась в том, что я использовал @RestController вместо @Controller как аннотацию в классе контроллера. Надеюсь, это поможет кому-то помочь.

Ответ 4

моя проблема была Spring vesrion. Я обнаружил, что, поскольку версия 1.4.3 и выше останавливает поддержку встроенных JSP. Поэтому я меняю версию на 1.4.1, это сработало для меня.

снимается другая вещь:

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

он не будет работать с ним.

Ответ 5

В дополнение к ответам выше приложение должно быть развернуто как война вместо jar

<groupId>com.igt</groupId>
<artifactId>customer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

для запуска

java -jar customer-0.0.1-SNAPSHOT.war

Также, если вы намереваетесь запустить свое приложение в качестве войны или в качестве исполняемого приложения, вам необходимо предоставить общие настройки компоновщика в методе, который доступен для обратного вызова SpringBootServletInitializer и основного метода, что-то вроде

package com.igt.customer;

import java.util.Arrays;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;



@SpringBootApplication
public class CustomerApplication extends org.springframework.boot.web.support.SpringBootServletInitializer {


    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(CustomerApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(CustomerApplication.class, args);
    }



     @Bean
        public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
            return args -> {

                System.out.println("Let inspect the beans provided by Spring Boot:");

                String[] beanNames = ctx.getBeanDefinitionNames();
                Arrays.sort(beanNames);
                for (String beanName : beanNames) {
                    System.out.println(beanName);
                }

            };
        }


}

См.

this

Ответ 6

Это рабочее решение для меня об ошибке "Белая метка": не удается найти страницу просмотра (jsp)

В POM.xml убедитесь, что упаковка - это "война", и добавьте зависимости tomcat/jasper

<packaging>war</packaging>
<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>

Добавьте префикс/суффикс в application.properties

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

** Если вы используете Intellij, вы должны установить каталоги веб-ресурсов. В разделе Структура проекта (ctrl + alt + shift + S)> Фасеты> Выберите веб (ваше приложение)> Добавить (+) каталоги веб-ресурсов (у меня есть...... \src\main\webapp)

** Если у вас есть несколько модулей (в целых числах), выполните "Выполнить"> "Изменить конфигурацию"> выберите "Springboot" для приложения> вкладка "Конфигурация"> "Рабочий каталог как $ MODULE_WORKING_DIR $".

Ответ 7

Если вы используете инструменты разработки IDEA, попробуйте указать

Configurations -> Configuration -> environment -> Working directory

Значение в $MODULE_DIR$

Ответ 8

Spring В MVC нет стандартной страницы ошибок по умолчанию (fall-back). Наиболее распространенным способом установки страницы ошибки по умолчанию всегда был SimpleMappingExceptionResolver (поскольку Spring V1 фактически). Однако Spring Boot также обеспечивает обратную страницу обработки ошибок.

При запуске Spring Boot пытается найти сопоставление для /error. По соглашению URL, заканчивающийся на /error, сопоставляется с логическим видом с тем же именем: error. Как правило, это представление в свою очередь отображает шаблон error.html Thymeleaf. (Если вы используете JSP, он будет отображаться на error.jsp в соответствии с настройкой вашего InternalResourceViewResolver).


Spring Boot будет автоматически использовать и настроить Thymeleaf как механизм рендеринга представления, если он находится в пути к классам.

Тимелеар с Maven:

Убедитесь, что Maven 3 установлен с помощью следующей команды: mvn -version. Перейдите в каталог, в который вы хотите создать свой проект, и выполните Maven archtetype:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=pl.codeleak.demos.sbt -DartifactId=spring-boot-thymeleaf -interactiveMode=false

Вышеупомянутая команда создаст новый каталог spring -boot-thymeleaf. Теперь вы можете импортировать его в свою среду IDE. Следующий шаг - настроить приложение. Откройте pom.xml и добавьте родительский проект:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.8.RELEASE</version>
</parent>

Значения из родительского проекта будут по умолчанию для этого проекта, если они оставлены неуказанными. Следующим шагом будет добавление веб-зависимостей. Для этого я сначала удалил все предыдущие зависимости (см. Junit 3.8.1) и добавил следующие зависимости:

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

Теперь подождите несколько секунд, пока Maven не загрузит зависимости и не выполнит mvn dependency: tree, чтобы увидеть, какие зависимости включены. Следующее - конфигурация упаковки. Добавьте add Spring Boot Maven Plugin:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Тимелеаф с Gradle:

Чтобы поставить Thymeleaf на путь к классам, используйте

compile("org.springframework.boot:spring-boot-starter-thymeleaf")

в файле сборки gradle (с использованием соответствующей зависимости maven просто).

В вашем случае, чтобы отобразить представление index.jsp (в соответствии с используемым контроллером), вам нужно поместить его под src/main/resources/templates/.


Если сопоставление с /error в представлении не найдено, Spring Boot определяет собственную страницу ошибки возврата - так называемый Whitelabel Error Page (минимальная страница с информацией о статусе HTTP и любой информацией об ошибке, например сообщение из неперехваченного исключения).

Ответ 9

Вы можете использовать тимелеар с jsp, но вам нужно написать:

spring.thymeleaf.excluded-view-names=#jsp file without extension

в файле application.properties

Ответ 10

Чтобы иметь это в pom.xml

<!-- JSP -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<!-- jstl for jsp -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

Этого может быть недостаточно.

Вы не должны пропустить это.

<packaging>war</packaging>

В противном случае, когда вы создадите пакет, вы получите файл jar и не имеете JSP и встроенный tomcat.

См. приведенный пример и его объяснение здесь https://www.surasint.com/spring-boot-jsp/

Ответ 11

Мой проект работает нормально в Eclipse, но после развертывания на сервере Jalastic, это показывает эту ошибку. Кто-нибудь, помогите мне, пожалуйста

Ответ 12

Попробуйте добавить файлы ошибок jsp в папку с ошибкой.

application.properties
spring.mvc.view.prefix=/views/jsp/
spring.mvc.view.suffix=.jsp

jsp files :
/views/jsp/error/401.jsp
/views/jsp/error/404.jsp - to display 404 instead of default whitelabel page