使用 Spring MVC 3.1+ WebApplication初始化程序以编程方式配置会话配置和错误页面

2022-09-02 04:01:27

WebApplicationInitializer 提供了一种以编程方式表示标准 Web.xml文件的大部分内容的方法 - servlet、过滤器、侦听器。

但是,我无法找到使用WebApplicationInitializer表示这些元素(会话超时,错误页面)的好方法,是否仍有必要为这些元素维护web.xml?

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/uncaughtException</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/resourceNotFound</location>
</error-page>

答案 1

我对这个主题做了一些研究,发现对于一些配置,如sessionTimeOut和错误页面,你仍然需要拥有web.xml。

看看这个链接

希望这对您有所帮助。干杯。


答案 2

使用弹簧靴很容易。

我相信它也可以在没有弹簧靴的情况下通过扩展SpringServletContainerInitializer来完成。似乎这就是它专门设计的。

Servlet 3.0 ServletContainerInitializer 旨在支持使用 Spring 的 WebApplicationInitializer SPI 对 servlet 容器进行基于代码的配置,而不是(或可能与传统的基于 web.xml的方法结合使用)。

示例代码(使用 SpringBootServletInitializer)

public class MyServletInitializer extends SpringBootServletInitializer {

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory containerFactory = new TomcatEmbeddedServletContainerFactory(8080);

        // configure error pages
        containerFactory.getErrorPages().add(new ErrorPage(HttpStatus.UNAUTHORIZED, "/errors/401"));

        // configure session timeout
        containerFactory.setSessionTimeout(20);

        return containerFactory;
    }
}

推荐