WEB-INF在java Web应用程序中的实际作用?

时间:2014-12-02 06:29:55

标签: 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-INF文件夹中放入这些文件如何访问这些文件。

在开始我的应用开发之前,我需要对这几点进行一些澄清。 请有人帮我解决这些问题。

4 个答案:

答案 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,它更容易设置,并且在您的应用程序中没有配置要求。