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

时间:2015-05-15 12:07:37

标签: java servlets web.xml

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

提前谢谢!

7 个答案:

答案 0 :(得分:14)

如果您的容器支持最新的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提供的注释。

答案 1 :(得分: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并不要求你这样做,它使用了你已经习惯使用的大部分内容。

答案 2 :(得分:3)

另一种方式(Spring 3.1+) -

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

AbstractDispatcherServletInitializer

答案 3 :(得分:2)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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