java tomcat7 java-ee-6 servlet-3.0

java - ¿Cómo definir<welcome-file-list> y<error-page> en web.xml-less del servlet 3.0?



tomcat7 java-ee-6 (3)

En Servlets 3.0 no necesita un web.xml para muchos casos, sin embargo, a veces es necesario o simplemente útil. Su caso es solo uno de ellos: no hay anotaciones especiales para definir la lista de archivos de bienvenida o las páginas de error.

Otra cosa es: ¿realmente te gustaría tenerlos codificados? Hay algunos casos de uso válidos para la configuración basada en anotación / programación y para la configuración declarativa en XML. Mudarse a Servlets 3.0 no significa necesariamente deshacerse de web.xml a toda costa.

Me gustaría encontrar las entradas que publicó un mejor ejemplo de configuración en XML. En primer lugar, se pueden cambiar de una implementación a otra y, en segundo lugar, afectan a toda la aplicación y no a cualquier Servlet en particular.

Tengo una aplicación web existente que quiero convertir en web.xml-less de servlet''s 3.0. Me las arreglé para hacerlo funcionar, sin embargo, hay 2 etiquetas en web.xml que aún no conozco el código equivalente en el entorno web.xml-less.

<welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/pageNotFound</location> </error-page>

Cualquier ayuda es apreciada


En Spring Boot o en la aplicación general Spring MVC para el siguiente escenario:

Los archivos estáticos se pueden servir desde ubicaciones registradas con un ResourceHandlerRegistry personalizado. Tenemos un recurso estático index.html y se puede acceder a él en localhost: 8080 / index.html . Solo queremos redirigir localhost: 8080 / request a localhost: 8080 / index.html , se puede usar el siguiente código.

package in.geekmj.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @EnableWebMvc public class WebConfiguration extends WebMvcConfigurerAdapter { private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" }; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "/index.html"); } }

Ahora accediendo a localhost: 8080 / se redireccionará a localhost: 8080 / index.html


Para la lista de páginas de bienvenida analógica, ponga esto en

@EnableWebMvc @Configuration @ComponentScan("com.springapp.mvc") public class MvcConfig extends WebMvcConfigurerAdapter { ... @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/*.html").addResourceLocations("/WEB-INF/pages/"); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index.html"); } ... }