WEB-INF在java WEB应用程序中的实际角色?

WEB-INF在java WEB应用程序中的实际角色?,java,angularjs,spring-mvc,web-applications,Java,Angularjs,Spring Mvc,Web Applications,我正在使用Java、Spring、Hibernate和AngularJS创建一个web应用程序。 但是我不清楚WEB-INF目录的作用。据我所知,WEB-INF是我们保存WEB配置文件的WEB目录。但我在AngularJS应用程序中看到了一些示例,其中js和html被放在WEB-INF文件夹中,并且众所周知,WEB-INF不是公开访问的。那么,为什么我们要把这些文件放在WEB-INF文件夹中?即使当我们响应客户端可见的html和js请求时,公开访问的实际含义是什么?如果我们把这些文件放在WEB-

我正在使用Java、Spring、Hibernate和AngularJS创建一个web应用程序。 但是我不清楚
WEB-INF
目录的作用。据我所知,WEB-INF是我们保存WEB配置文件的WEB目录。但我在AngularJS应用程序中看到了一些示例,其中js和html被放在
WEB-INF
文件夹中,并且众所周知,
WEB-INF
不是公开访问的。那么,为什么我们要把这些文件放在
WEB-INF
文件夹中?即使当我们响应客户端可见的html和js请求时,公开访问的实际含义是什么?如果我们把这些文件放在
WEB-INF
文件夹中,如何访问这些文件

在开始我的应用程序开发之前,我需要澄清这几点。
请任何人都可以帮助我解决这些问题

资源文件经常存储在WEB-INF中,因为Java servlet容器不会直接为这些文件提供服务。相反,一些Java控制器代码被用来间接地为它们服务。这是完全可以接受的,但我更喜欢一种解决方案,它提供来自不同服务器的静态内容,并让Java容器只处理动态代码。在紧急情况下,您可能只需添加一个反向代理,然后以这种方式卸载静态内容处理。

正如您所说,我们将配置文件放入
WEB-INF
文件夹。但在某些情况下,您使用的资源文件(例如HTML模板)不会按原样发送到客户端,但通常会发生一些转换或参数替换,这些转换或参数替换通常由
Servlet
处理


将这些模板和资源放入
WEB-INF
文件夹是可以的,因为客户端不应该看到/访问这些文件,而只能看到转换/参数替换的结果。

如果是Spring,您可以在没有WEB-INF目录的情况下构建应用程序。例如:spring boot+thymeleaf,可以将所有html、css和js文件放在src/main/resources/static中。。因此,并非所有java WEB应用程序都需要WEB-INF目录。

您根本不必使用WEB-INF。 这里有一个关于如何做到这一点的简单(官方Spring指南)


现在,正如Elliot提到的,有时使用代理是一个好主意(取决于应用程序应该支持的流量类型)。您还可以使用CDN,它更易于设置,并且在您的应用程序中没有配置要求。

在访问这些文件的情况下,您可以参考本文。嗨,艾略特,谢谢你的澄清。我可以了解更多关于反向代理以及如何与spring应用程序一起使用的信息吗?您可以向我推荐任何可以了解此信息的网站。许多web代理(Squid、Varnish)和web服务器(Apache、IIS)都可以设置为充当反向代理。这可能会有帮助。