我真的需要基于Servlet的Java Web应用程序的web.xml吗?

问题描述 投票:35回答:7

我没有在真实世界的网络项目上工作。在大学时,我们使用Servlet和Spring进行Java Web开发。在这两个项目中,我们都获得了已配置的web.xml文件,我们只对它们进行了微小的更改。现在我需要从头开始构建一个Web应用程序。我在Eclipse中创建了新的Servlet类,并没有自动创建任何web.xml。然后我用谷歌搜索,我从几个资源中读到了不需要web.xml,但是这个推理被放在了几个句子中,所以我不确定使用注释而不是web.xml是没有问题的。如果不需要配置web.xml,我会很高兴,因为我没有自己配置,我想更多地关注业务逻辑。

先感谢您!

java servlets web.xml
7个回答
15
投票

如果您有一个支持最新j2ee规范的容器,则不需要web.xml文件。 Here是一个简单的servlet示例的链接,使用注释和here,你可以找到相同的Spring MVC;为方便起见,我在这里发布了这个例子

public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) {
        ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
        registration.setLoadOnStartup(1);
        registration.addMapping("/example/*");
    }

}

Here是另一个链接,显示如何使用其他可用的注释(@ServletFilter,@ WebServletContextListener);您可以从here下载规格,以便更详细地了解j2ee提供的注释。


11
投票

从Servlet 3开始,不需要web.xml。你会想要使用像Tomcat 7或8这样的东西(更好的选择)。对于原始servlet this is a good starting point

如果你想使用现代的Spring,Grails 3是一个很好的方式。它可以解决所有这些问题,Grails是一个非常高效的Web开发框架。您可以将其视为基于Spring和Hibernate构建的Ruby on Rails。

此时,除非使用需要它的框架,否则不必编写任何web.xml来进行设置。我不知道spring mvc,但是Grails并不要求你这样做,它使用了你已经习惯使用的大部分内容。


3
投票

另一种方式(春季3.1+) -

名为WebApplicationInitializerAbstractDispatcherServletInitializer的抽象基类实现通过简单地重写方法来指定servlet映射和DispatcherServlet配置的位置,从而更容易注册DispatcherServlet -

public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }

    @Override
    protected WebApplicationContext createServletApplicationContext() {
        XmlWebApplicationContext cxt = new XmlWebApplicationContext();
        cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
        return cxt;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

2
投票

是否需要web.xml取决于您在应用程序中声明的servlet规范。如果您将使用spec 3.0构建应用程序,则可以使用注释来声明servlet,并将其部署到容器而无需web.xml文件。这是作为JSR-315的一部分完成的。


0
投票

使用Spring Boot,它将为您管理容器和所有样板配置。您可以使用Initializr生成可立即启动的骨架。


0
投票

不,如果您使用servlet版本web.xmlservlet based application,则不需要>3.0用于tomcat 7,因为它不会在以前版本的tomcat中运行。

注释表示元数据。如果使用注释,则不需要部署描述符(web.xml文件)。查看所有可用注释的Here


0
投票

在这里,我发现了一个Web应用程序的示例,而不使用部署描述符文件(web.xml)。这里唯一要考虑的是这将适用于最新的tomcat版本> = 7.0

访问http://java-demos.blogspot.com/2014/01/servlet-web-application-without-webxml.html

访问https://www.baeldung.com/java-web-app-without-web-xml

© www.soinside.com 2019 - 2024. All rights reserved.