tutorial mvc example java spring jsp spring-mvc

java - mvc - Bota de muelle JSP 404



spring mvc jsp view (9)

Además de las respuestas anteriores, la aplicación debe implementarse como war en lugar de jar

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

correr

java -jar customer-0.0.1-SNAPSHOT.war

Además, si pretende iniciar su aplicación como una guerra o como una aplicación ejecutable, debe compartir las personalizaciones del constructor en un método que esté disponible para la devolución de llamada SpringBootServletInitializer y el 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 mira

this

Estoy tratando de agregar una página jsp en mi servicio Spring Boot. Mi problema es que cada vez que intento ir a esa página tengo esto:

Página de error de Whitelabel

Esta aplicación no tiene una asignación explícita para / error, por lo que está viendo esto como una alternativa.

Mar 21 de abril, 23:16:00 EEST 2015 Se produjo un error inesperado (tipo = No encontrado, estado = 404). No hay mensajes disponibles

He añadido el prefijo y el sufijo en mi application.properties:

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

Esta es mi clase de controlador:

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

Mi clase de aplicación:

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

Y el 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>

Y esta es la estructura del archivo 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



En las versiones más recientes de Spring, se debe colocar lo siguiente en el archivo application.properties:

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

Además, los archivos JSP deben colocarse en src / main / resources / META-INF / resources / WEB-INF / jsp


Intente y agregue sus archivos de error jsp en la carpeta de errores.

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


Mi problema fue que estaba usando @RestController en lugar de @Controller como la anotación en mi clase de controlador. Espero que esto pueda ayudar a alguien.


Para tener esto en 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>

Puede que no sea suficiente.

No debes perderte esto.

<packaging>war</packaging>

De lo contrario, cuando compile el paquete, obtendrá un archivo jar que no tiene JSP ni el tomcat incorporado.

Vea el ejemplo ejecutable y su explicación aquí https://www.surasint.com/spring-boot-jsp/


Puedes usar thymeleaf con jsp pero debes escribir:

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

en el archivo application.properties


Spring MVC no ofrece una página de error predeterminada (alternativa) predeterminada. La forma más común de establecer una página de error predeterminada siempre ha sido SimpleMappingExceptionResolver (desde Spring V1 de hecho). Sin embargo, Spring Boot también proporciona una página alternativa de manejo de errores.

En el inicio, Spring Boot intenta encontrar una asignación para /error . Por convención, una URL que termina en /error asigna a una vista lógica del mismo nombre: error . En general, esta vista se asigna a su vez a la plantilla de Thymeleaf error.html . (Si usa JSP, se error.jsp a error.jsp según la configuración de su InternalResourceViewResolver).

Spring Boot utilizará y configurará automáticamente Thymeleaf como el motor de renderizado de la vista, siempre y cuando esté en la ruta de clase.

Thymeleaf con Maven:

Asegúrese de tener Maven 3 instalado con el siguiente comando: mvn --version. Navegue hasta el directorio en el que desea crear su proyecto y ejecute el archtetype de Maven:

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

El comando anterior creará un nuevo directorio spring-boot-thymeleaf. Ahora puedes importarlo a tu IDE. El siguiente paso es configurar la aplicación. Abra pom.xml y agregue un proyecto principal:

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

Los valores del proyecto principal serán los predeterminados para este proyecto si no se especifican. El siguiente paso es agregar dependencias web. Para hacerlo, primero eliminé todas las dependencias anteriores (en realidad Junit 3.8.1) y agregué las siguientes dependencias:

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

Ahora, espere un segundo hasta que Maven descargue las dependencias y ejecute mvn dependency: tree para ver qué dependencias están incluidas. Lo siguiente es una configuración de empaquetado. Vamos a añadir Spring Boot Maven Plugin:

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

Thymeleaf con Gradle:

Para poner Thymeleaf en el uso classpath

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

en el archivo de compilación de Gradle (usar la dependencia de Maven relevante es sencillo).

En su caso, para mostrar la vista index.jsp (de acuerdo con el controlador que está utilizando), debe colocarla bajo src/main/resources/templates/ .

Si no se puede encontrar una asignación de / error a una Vista, Spring Boot define su propia página de error de Whitelabel Error Page llamada Whitelabel Error Page (una página mínima con solo la información de estado de HTTP y cualquier detalle de error, como el mensaje de una excepción no capturada).


mi problema fue Spring vesrion : encontré que, desde la versión 1.4.3 y superior, deja de ser compatible con las JSP incorporadas. Así que cambio la versión a 1.4.1 , ha funcionado para mí.

otra cosa despegar

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

no funcionará con él.