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

对于基于Servlet的Java web应用程序,我真的需要web.xml吗?,java,servlets,web.xml,Java,Servlets,Web.xml,我没有参与过现实世界的网络项目。在大学里,我们使用servlet和Spring进行javaweb开发。在这两个项目中,我们都得到了已经配置好的web.xml文件,我们只对它们做了一些小的更改。现在我需要从头开始构建一个web应用程序。我在Eclipse中创建了新的Servlet类,它没有自动创建任何web.xml。然后我在谷歌上搜索,从一些参考资料中读到web.xml并不是真正需要的,但这种推理是用几句话表达的,所以我不确定用注释代替web.xml是否没有问题。如果不需要配置web.xml,我会

我没有参与过现实世界的网络项目。在大学里,我们使用servlet和Spring进行javaweb开发。在这两个项目中,我们都得到了已经配置好的web.xml文件,我们只对它们做了一些小的更改。现在我需要从头开始构建一个web应用程序。我在Eclipse中创建了新的Servlet类,它没有自动创建任何web.xml。然后我在谷歌上搜索,从一些参考资料中读到web.xml并不是真正需要的,但这种推理是用几句话表达的,所以我不确定用注释代替web.xml是否没有问题。如果不需要配置web.xml,我会非常高兴,因为我还没有自己配置过web.xml,我想更多地关注业务逻辑


提前谢谢你

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

如果您有支持最新j2ee规范的容器,则不需要
web.xml
文件。 是指向使用注释的简单servlet示例的链接,您可以在SpringMVC中找到相同的注释;为了方便起见,我把这个例子贴在这里

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

}

是显示如何使用其他可用注释的另一个链接(@ServletFilter,@WebServletContextListener);您可以下载规范表单,以便通过j2ee获得更详细的注释视图。

从Servlet 3开始,不需要web.xml。你会想使用Tomcat7或8(更好的选择)。对于原始servlet

如果您想使用现代Spring,Grails3是一个很好的选择。它解决了所有这些问题,Grails是一个非常高效的web开发框架。您可以将其视为构建在Spring和Hibernate之上的RubyonRails


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

不,如果您使用的是servlet版本
>3.0
tomcat 7
,则基于servlet的应用程序不需要
web.xml
,因为它不会在以前的tomcat版本中运行


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

是否需要web.xml取决于您在应用程序中声明的servlet规范。如果要使用spec 3.0构建应用程序,可以使用注释声明servlet,并将其部署到容器中,而无需web.xml文件。这是另一种方式(Spring 3.1+)的一部分-

名为
AbstractDispatcherServletInitializer
WebApplicationInitializer
的抽象基类实现通过简单地重写指定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[] { "/" };
    }

}

在这里,我找到了一个不使用部署描述符文件(Web.xml)的Web应用程序示例。这里要考虑的唯一一点是,它将与最新的Tomcat版本>=7

一起工作。 拜访


访问

如果您使用Spring,您根本不可能编写任何servlet。因为servlet 3规范(IIRC)不再需要web.xml。仍然取决于他最终将使用哪个应用程序服务器,以及他希望使用Spring OP的程度,他将注定不仅要编写一个web.xml,还要编写另一个数以百万计的xml文件。web.xml是最简单的工具之一。@BigMike从2.5版开始你就没有使用过Spring,是吗?@chrylis是的,我仍然被我不得不使用的大量无用的、复杂的、不确定的xml垃圾所伤。如果他们已经简化了,那就好了,“最新”的规范叫做“JavaEE”。“J2EE”已被删除。您好,但是如果我们不使用xml,那么可能会有一些内部实现,说明如何将操作绑定到servlet。这是什么地方?@VikramSaini,将操作绑定到servlet现在是在注释中完成的,如下所示: