我正在使用Java,Spring,Hibernate和AngularJS创建一个Web应用程序。
但我不清楚WEB-INF
目录的作用。据我所知WEB-INF
是一个web目录,我们保存我们的Web配置文件。但我在AngularJS应用程序中看到了一些示例,其中js和html放在WEB-INF
文件夹中,并且已知WEB-INF
未公开访问。那么为什么我们将这些文件放在WEB-INF
中,即使我们对请求的响应html和js对客户端是可见的,实际意味着公开访问,如果我们在WEB-INF
文件夹中放入这些文件如何访问这些文件。
在开始我的应用开发之前,我需要对这几点进行一些澄清。 请有人帮我解决这些问题。
答案 0 :(得分:2)
正如您所说,我们将配置文件放入WEB-INF
文件夹。但是有些情况下你使用的资源文件(例如HTML模板)没有按原样发送到客户端,但通常会发生一些转换或参数替换,通常由Servlet
处理。
可以将这些模板和资源放到WEB-INF
文件夹中,因为客户端不应该看到/访问文件,而只能看到转换/参数替换的结果。
答案 1 :(得分:1)
资源文件经常存储在WEB-INF中,因为Java servlet容器不会直接提供这些文件。相反,一些Java控制器代码被用来间接地为它们服务。这是完全可以接受的,但我更喜欢一种解决方案,它提供来自不同服务器的静态内容,并让Java容器只处理动态代码。在紧要关头,您可能只需添加反向代理并以这种方式卸载静态内容。
答案 2 :(得分:0)
如果是Spring,您可以在没有WEB-INF目录的情况下构建应用程序。例如:spring-boot + thymeleaf,可以将所有html,css和js文件放到src / main / resources / static ..所以所有java Web应用程序都不需要WEB-INF目录。
答案 3 :(得分:0)
您根本不必使用WEB-INF。 这是一个关于如何做到这一点的简单AngularJS example app(官方春季指南)。
现在,就像Elliot提到的那样,有时候使用代理是一个好主意(取决于你的应用程序应该支持的流量类型)。您还可以使用CDN,它更容易设置,并且在您的应用程序中没有配置要求。