Spring Boot JSP 404

Estou tentando adicionar uma página jsp no meu serviço Spring Boot. Meu problema é que toda vez que eu tento ir para essa página eu tenho isso:

Página de erro do Whicanvasbel

Este aplicativo não possui mapeamento explícito para / error, portanto, você está vendo isso como um fallback.

Ter Abr 21 23:16:00 EEST 2015 Ocorreu um erro inesperado (type = Not Found, status = 404). Nenhuma mensagem disponível

Eu adicionei o prefixo e sufix no meu application.properties:

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

Esta é minha class de controlador:

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

Minha class de aplicativo:

 @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); } } 

E o index.jsp:

     

Hello, World!!!

JSTL URL: ${url}

E esta é a estrutura do arquivo 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 

Assegure-se de ter jasper e jstl na lista de dependencies:

   org.apache.tomcat.embed tomcat-embed-jasper provided   javax.servlet jstl  

Aqui está um projeto inicial de trabalho – https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp

Nas versões mais recentes do Spring, o seguinte deve ser colocado no arquivo application.properties:

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

Além disso, os arquivos JSP precisam ser colocados em src / main / resources / META-INF / resources / WEB-INF / jsp

Meu problema era que eu estava usando @RestController em vez de @Controller como a anotação na minha class de controlador. Espero que isso possa ajudar alguém.

O meu problema foi o Spring Vesrion : descobri que, desde a versão 1.4.3 e superior, deixa de suportar as JSPs incorporadas. Então mudo a versão para 1.4.1 , funcionou para mim.

uma outra coisa decolar:

  org.springframework.boot spring-boot-starter-thymeleaf  

não vai funcionar com isso.

Além das respostas acima, o aplicativo precisa ser implantado como guerra, em vez de jar

 com.igt customer 0.0.1-SNAPSHOT war 

para correr

 java -jar customer-0.0.1-SNAPSHOT.war 

Além disso, se você pretende iniciar seu aplicativo como uma guerra ou como um aplicativo executável, é necessário compartilhar as personalizações do construtor em um método que esteja disponível para o retorno de chamada SpringBootServletInitializer e o método principal, algo como

 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's inspect the beans provided by Spring Boot:"); String[] beanNames = ctx.getBeanDefinitionNames(); Arrays.sort(beanNames); for (String beanName : beanNames) { System.out.println(beanName); } }; } } 

Por favor, veja

esta

O Spring MVC não oferece nenhuma página de erro padrão (fall-back) pronta para uso. A maneira mais comum de definir uma página de erro padrão sempre foi o SimpleMappingExceptionResolver (desde a Spring V1, na verdade). No entanto, o Spring Boot também fornece uma página de tratamento de erros de fallback.

Na boot, o Spring Boot tenta encontrar um mapeamento para /error . Por convenção, um URL que termina em /error mapeia para uma visualização lógica com o mesmo nome: error . Geralmente, essa visão mapeia, por sua vez, o modelo error.html Thymeleaf. (Se estiver usando JSP, error.jsp para error.jsp acordo com a configuração do seu InternalResourceViewResolver).


O Spring Boot usará e configurará automaticamente o Thymeleaf como o mecanismo de renderização de visualização, desde que esteja no caminho de class.

Thymeleaf com Maven:

Certifique-se de ter o Maven 3 instalado com o seguinte comando: mvn –version. Navegue até o diretório no qual você deseja criar seu projeto e execute o tipo de arquivo Maven:

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

O comando acima criará um novo diretório spring-boot-thymeleaf. Agora você pode importá-lo para o seu IDE. O próximo passo é configurar o aplicativo. Abra pom.xml e adicione um projeto pai:

  org.springframework.boot spring-boot-starter-parent 1.1.8.RELEASE  

Os valores do projeto pai serão o padrão para este projeto se não forem especificados. O próximo passo é adicionar dependencies da web. Para fazer isso, eu primeiramente removi todas as dependencies anteriores (junit 3.8.1 na verdade) e adicionei as dependencies abaixo:

   org.springframework.boot spring-boot-starter-web   org.springframework.boot spring-boot-starter-thymeleaf   

Agora, espere um segundo até o Maven baixar as dependencies e executar a dependência mvn: tree para ver quais dependencies estão incluídas. A próxima coisa é uma configuração de embalagem. Vamos adicionar o plugin Spring Boot Maven:

    org.springframework.boot spring-boot-maven-plugin    

Thymeleaf com Gradle:

Para colocar Thymeleaf no uso do classpath

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

no arquivo de compilation gradle (usando a dependência maven relevante é simples).

No seu caso, para exibir a visualização index.jsp (de acordo com o controlador que você está usando), é necessário colocá-lo em src/main/resources/templates/ .


Se nenhum mapeamento de / error para um View for encontrado, o Spring Boot definirá sua própria página de erro de Whicanvasbel Error Page – a chamada Whicanvasbel Error Page (uma página mínima com apenas as informações de status HTTP e detalhes de erro, como a mensagem de uma exceção não identificada).

Você pode usar thymeleaf com jsp mas você tem que escrever:

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

no arquivo application.properties

Para ter isso em pom.xml

   org.apache.tomcat.embed tomcat-embed-jasper provided    javax.servlet jstl  

Pode não ser o suficiente.

Você não deve perder isso.

 war 

Caso contrário, quando você construir o pacote, você obterá como um arquivo jar e não terá JSP nem o tomcat incorporado.

Veja o exemplo rodável e sua explicação aqui https://www.surasint.com/spring-boot-jsp/

Tente e adicione seus arquivos jsp de erro na pasta de erro.

 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 whicanvasbel page