代码之家  ›  专栏  ›  技术社区  ›  Aaron Digulla

在使用/META-INF/resources时,WEB-INF的作用是什么?[副本]

  •  3
  • Aaron Digulla  · 技术社区  · 6 年前

    我把我所有的网络资源 /META-INF/resources ,所以我可以在不同的web应用程序中重用它们。

    但是 web.xml 内部 WEB-INF/ ? 我必须把它放在里面吗 src/main/webapp/ 或者我能把它放在下面吗 src/main/resources/ 也?

    如果是,我要把它放在哪里? src/main/resources/WEB-INF/ src/main/resources//META-INF/resources/WEB-INF/ ?

    我使用Maven和汇编插件来构建我的项目,而不是WAR插件。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Steve C    6 年前

    简而言之,你可以。

    您可以共享java类、web资源和 web-fragment.xml文件 从Servlet3.0开始,web应用程序之间的文件放在一个普通的jar文件中。这些jar被称为“web片段”。

    从Servlet3.1规范的第8.2.1条:

    ...

    web片段是web应用程序的逻辑分区,这样web应用程序中使用的框架就可以定义所有工件,而无需要求开发人员在web.xml中编辑或添加信息。它可以包含web.xml描述符使用的几乎所有相同的元素。但是,描述符的顶级元素必须是web fragment,相应的描述符文件必须名为web-fragment.xml。与排序相关的元素在web-fragment.xml和web.xml之间也有所不同,请参阅第14章部署描述符部分中的web片段对应模式。

    如果框架打包为jar文件,并且具有部署描述符形式的元数据信息,那么web-fragment.xml描述符必须位于jar文件的META-INF/目录中。

    ...

    因此,您不必尝试以某种方式嵌入web.xml文件,只需将相同的内容放在META-INF/web-fragment.xml文件中(它共享大多数web.xml XSD)。

    正如您已经发现的那样,您的web资源位于META-INF/resources中。

    总之,您可以轻松地在普通jar文件中构建共享组件。您不必为maven程序集插件而烦恼。

        2
  •  0
  •   Rafael Guillen    6 年前

    在maven项目中 web.xml src/main/webapp/WEB-INF ,如果需要,您可以更改它,但结果是 .war 文件, web.xml文件 必须 包括在内 WEB-INF 文件夹。

    所以,把 web.xml文件 里面 src/main/resources/META-INF 不会起作用的。

    对于较新的 Servlet 规格(我想 Servlet 3.0 您可以使用注释,web.xml不是必需的。

    编辑: 注意web.xml是war文件(web应用程序)的标准配置文件,在jar文件(库)中会被忽略

    推荐文章