tutorial starter start mvc example application java spring spring-boot

starter - Java Spring Boot: ¿Cómo asignar la raíz de mi aplicación("/") a index.html?



spring boot wikipedia (9)

  1. El archivo index.html debe aparecer debajo de la ubicación: src / resources / public / index.html O src / resources / static / index.html si ambas ubicaciones están definidas, entonces, qué primero ocurrirá index.html llamará desde ese directorio.
  2. El código fuente se ve así:

    import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebAppConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index.html"); } }

Soy nuevo en Java y Spring. ¿Cómo puedo asignar la raíz de mi aplicación http://localhost:8080/ a un static index.html ? Si navego a http://localhost:8080/index.html funciona bien.

La estructura de mi aplicación es:

Mi config/WebConfig.java ve así:

@Configuration @EnableWebMvc @ComponentScan public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/"); } }

Traté de agregar registry.addResourceHandler("/").addResourceLocations("/index.html"); Pero falla.


Actualización: enero-2019

Primero cree una carpeta pública en recursos y cree el archivo index.html. Utilice WebMvcConfigurer en lugar de WebMvcConfigurerAdapter.

server.port=15800 spring.mvc.view.prefix=/public/ spring.mvc.view.suffix=.html spring.datasource.url=jdbc:mysql://localhost:3306/hibernatedb spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.ddl-auto = update spring.jpa.properties.hibernate.format_sql = true logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE


Dentro de Spring Boot , siempre pongo las páginas web dentro de una carpeta como public o webapps o views y la webapps dentro del directorio src/main/resources como se puede ver en application.properties también.

y esta es mi application.properties :

package com.bluestone.pms.app.boot; import org.springframework.boot.Banner; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @EnableAutoConfiguration @ComponentScan(basePackages = {"com.your.pkg"}) public class BootApplication extends SpringBootServletInitializer { /** * @param args Arguments */ public static void main(String[] args) { SpringApplication application = new SpringApplication(BootApplication.class); /* Setting Boot banner off default value is true */ application.setBannerMode(Banner.Mode.OFF); application.run(args); } /** * @param builder a builder for the application context * @return the application builder * @see SpringApplicationBuilder */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return super.configure(builder); } }

tan pronto como servername:15800 la URL como servername:15800 y esta solicitud recibida por Spring Boot ocupó el despachador de Servlet, buscará exactamente index.html y este nombre será sensible a mayúsculas y minúsculas como spring.mvc.view.suffix que sería html, jsp , htm etc.

Espero que ayude a muchos.


Hubiera funcionado de @EnableWebMvc si no hubiera utilizado la anotación @EnableWebMvc . Cuando hace eso, apaga todas las cosas que Spring Boot hace por usted en WebMvcAutoConfiguration . Puede eliminar esa anotación, o puede volver a agregar el controlador de vista que apagó:

@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index.html"); }


Si usa el último spring-boot 2.1.6.RELEASE con una simple anotación @RestController entonces no necesita hacer nada, simplemente agregue su archivo index.html en la carpeta resources/static :

project ├── src ├── main └── resources └── static └── index.html

Luego presione la URL http: // localhost: 8080 . Espero que ayude a todos.


Un ejemplo de la respuesta de Dave Syer:

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class MyWebMvcConfig { @Bean public WebMvcConfigurerAdapter forwardToIndex() { return new WebMvcConfigurerAdapter() { @Override public void addViewControllers(ViewControllerRegistry registry) { // forward requests to /admin and /user to their index.html registry.addViewController("/admin").setViewName( "forward:/admin/index.html"); registry.addViewController("/user").setViewName( "forward:/user/index.html"); } }; } }


Yo tuve el mismo problema. Spring boot sabe dónde se encuentran los archivos html estáticos.

  1. Agregue index.html en la carpeta resources / static
  2. Luego elimine el método de controlador completo para la ruta raíz como @RequestMapping ("/"), etc.
  3. Ejecute la aplicación y verifique http: // localhost: 8080 (debería funcionar)

si se trata de una aplicación Spring boot.

Spring Boot detecta automáticamente index.html en la carpeta public / static / webapp. Si ha escrito algún controlador @Requestmapping("/") , anulará la función predeterminada y no mostrará el index.html menos que escriba localhost:8080/index.html


@Configuration @EnableWebMvc public class WebAppConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "index.html"); } }