当前位置: 首页 > 知识库问答 >
问题:

Spring应用中需要.xml卷筒纸

谷梁鸣
2023-03-14

Spring Web应用程序只是一个使用servlet API 3.0的普通Web应用程序。
在servlet API 3.0中web.xml文件是可选的(大多数时候)。我试图在我的Spring应用程序中不包含web.xml,但不知何故,即使使用Servlet 3.0,它似乎也是必需的

Spring应用程序和我在没有编写web.xml文件的情况下成功运行的Web应用程序之间的唯一区别是,在Spring中,过滤器和servlet是在lib文件夹的jar中定义的。

为什么会发生这种情况的任何线索?

共有2个答案

邰昀
2023-03-14

幸运的是,现在您可以创建完全无XML的Spring应用程序。有或没有Spring Boot的此类配置有各种不同的选项。

对于纯Spring,您可以使用AbstractAnnotationConfigDispatcherServletInitializer

使用Spring Boot,您可以拥有SpringBootServletInitializer。

这是我的Github存储库,其中包含基于这两种方法的一堆项目。

Servlet 的版本由类路径上的 Servlet API 定义。例如:

<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.servlet</artifactId>
  <version>3.0</version>
  <scope>provided</scope>
</dependency>

或者

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

您也不需要指定servlet,因为Spring有自己的servlet DispatcherServlet实现。

过滤器作为bean注册到Spring上下文中。

田仲卿
2023-03-14

你不能仅仅排除网络。xml,因为您(至少)需要定义您使用的ServletAPI的版本。

至少,您需要在<code>web.xml</code>中使用此选项:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">

其他一切(servlet、过滤器等)都可以使用注释进行配置。

 类似资料:
  • 嗨,我终于能够设置我的webscraper,并将数据导入到我的网页中:) 但是我的网页在端口3001上运行,而网页刮刀在端口8080上运行,我有点困惑,我怎么能设置一个计时器来更新后台的刮刀? Scraper.js 弗雷德里克

  • 我在下面提供了一些示例,但是我需要清除大部分可用的数据元素,所以不是寻找复制和粘贴的代码,而是寻找最好的方法。见下文。 链接:https://boardgamegeek.com/boardgame/63888/innovation 我试图从中提取的HTML示例。Span没有返回html_nodes,所以我无法从那里开始。 我假设这是JSON?有没有一种方法来解析html_text输出,或者另一种方

  • 前天我开始了解斯威格。太棒了。但可能是因为我缺乏知识,有些事情我做不到。我努力想解决它,最后我把它作为一个问题放在这里。 我的pom.xml 我添加了这个依赖项。我的servlet上下文。xml如下所示。我确实绑定了swagger配置bean并启用了此配置。 制造一种狂妄自大的姿态。具有以下项的属性。 并以包含任何其他属性文件的方式将其包含在myapplication上下文中。 我的控制器记录ap

  • “元素形状没有必需的属性Android:layout_height” 和另一个错误: “元素形状没有必需的属性Android:layout_width” 我尝试设置和和,,错误消失了,但是我不能设置任何按钮将其作为背景...所以我不能以这种方式使用这个XML。 我应该把它们调成什么?

  • 我是卷积神经网络的新手。我正在阅读一些教程,并使用Keras测试一些示例代码。要添加卷积层,基本上我只需要指定内核的数量和大小。 我的问题是每个内核是什么样子的?它们是所有计算机视觉应用程序的通用工具吗?

  • 我试图将一个spring boot应用程序打包成一场战争。据此,我修改了我的应用程序类: 还在我的pom.xml中添加了以下内容 当我打包项目时,我得到了以下错误: 当我在阅读spring boot应用程序时,我从未看到任何关于创建web.xml的内容。在将spring boot应用程序部署为war时,web.xml是必需的吗?