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");
}
...
}