如何在servlet 3.0的web.xml-less中定义<welcome-file-list>和<error-page>?

Win*_*ins 28 java servlet-3.0 java-ee-6 tomcat7

我有现有的web-app,我想将其转换为web.xml-less servlet 3.0.我已经设法使它工作,但是web.xml中有2个标签,我仍然不知道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>
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

Pio*_*cki 30

在Servlets 3.0中,在许多情况下你不需要web.xml,但是,有时它是必需的或者只是有用的.您的案例只是其中之一 - 没有特殊的注释来定义欢迎文件列表或错误页面.

另一件事是 - 你真的想让它们硬编码吗?基于注释/程序的配置和XML中的声明性配置有一些有效的用例.迁移到Servlets 3.0并不一定意味着不惜一切代价摆脱web.xml.

我会在你发布的条目中找到一个更好的XML配置示例.首先 - 它们可以从部署更改为部署,其次 - 它们会影响整个应用程序,而不会影响任何特定的Servlet.

  • 究竟.请记住您使用的版本和元数据完整属性(假或缺席).定义您正在使用的最新版本总是好的; 我为最常用的描述符准备了一些空的XML文件,然后发布它们[这里](http://piotrnowicki.com/2012/11/sample-empty-java-ee-6-files/).你可能会发现它很有用. (3认同)
  • 有时我想知道为什么我们要回到编程方式来配置事物。难道我们一开始就没有理由使用声明式的方式来配置事物,这就是我们发明它的原因吗? (2认同)

小智 10

对于模拟欢迎页面列表,请将其放入

@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");
    }
...
}
Run Code Online (Sandbox Code Playgroud)