Saltar al contenido

Arranque de primavera: error 404 al llamar a JSP usando el controlador

Mantén la atención ya que en este tutorial vas a encontrar la contestación que buscas.

Solución:

Parece que estabas muy cerca de la aplicación en funcionamiento. El problema principal en su código está en provided para su dependencia de Jasper. Y también parece que está ejecutando su código desde Eclipse IDE a través del main método.

Larga historia corta:

Si desea ejecutar su aplicación a través de la main método en MyApplication.java entonces simplemente elimina el alcance provided para el Jaspe.


   org.apache.tomcat.embed
   tomcat-embed-jasper

O puede ejecutar su aplicación exactamente en ese estado como lo tiene ahora desde la consola:

mvn clean spring-boot:run

Pero sugiero eliminar este alcance para que pueda ejecutar su código desde IDE y desde la consola. Además de eso parece spring-boot-starter-tomcat la dependencia es redundante (debe estar disponible dentro de spring-boot-starter-web). En pocas palabras, intente usar el siguiente archivo pom:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.3.RELEASE
        
    
    com.example
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot

    
        1.8
    

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

        
            org.apache.tomcat.embed
            tomcat-embed-jasper
        
    

Espero que mi respuesta te ayude.

Es posible que también deba agregar esto en pom.xml

 
        javax.servlet
        jstl
 

ACTUALIZACIÓN 1:

Limitación JSP

Cuando se ejecuta una aplicación Spring Boot que utiliza un contenedor de servlet incrustado (y está empaquetado como un archivo ejecutable), existen algunas limitaciones en la compatibilidad con JSP.

  • Con Jetty y Tomcat, debería funcionar si usa un paquete de guerra. Una guerra ejecutable funcionará cuando se inicie con java -jar, y también se podrá implementar en cualquier contenedor estándar. Los JSP no son compatibles cuando se usa un jar ejecutable.
  • Undertow no es compatible con JSP.
  • La creación de una página personalizada de error.jsp no anula la vista predeterminada
    para el manejo de errores. En su lugar, se deben usar páginas de error personalizadas.

Alcance

compile Este es el ámbito predeterminado, que se utiliza si no se especifica ninguno. Las dependencias de compilación están disponibles en todos los classpaths de un proyecto. Además, esas dependencias se propagan a proyectos dependientes.

provided Esto es muy parecido a compilar, pero indica que espera que el JDK o un contenedor proporcione la dependencia en tiempo de ejecución. Por ejemplo, al crear una aplicación web para Java Enterprise Edition, establecería la dependencia de la API Servlet y las API Java EE relacionadas con el alcance proporcionado porque el contenedor web proporciona esas clases. Este alcance solo está disponible en el classpath de compilación y prueba, y no es transitivo.

runtime Este ámbito indica que la dependencia no es necesaria para la compilación, pero sí para la ejecución. Está en el tiempo de ejecución y en las rutas de clase de prueba, pero no en la ruta de clase de compilación.

Además, intente cambiar lo siguiente en tomcat-embed-jasper

Remove provided OR change the scope to compile compile

Limitaciones de JSP Spring Boot JSP 404

Valoraciones y comentarios

Ten en cuenta recomendar este escrito si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *