2014-12-02 69 views
1

我正在使用Java,Spring,Hibernate和AngularJS創建一個Web應用程序。 但我不清楚WEB-INF目錄的作用。據我所知WEB-INF是一個網頁目錄,我們保持我們的網頁配置文件。但是我在AngularJS應用程序中看到了一些示例,其中js和html放在WEB-INF文件夾中,並且已知WEB-INF未公開訪問。那麼,爲什麼我們把這些文件放在WEB-INF之內,甚至當我們迴應一個請求時,公共訪問的實際含義是什麼?html和js對客戶端是可見的,如果我們把這些文件放在WEB-INF文件夾中,這些文件如何訪問這些文件。WEB-INF在java web應用程序中的實際作用?

在開始我的應用程序開發之前,我需要對這幾點做一些說明。 請任何人都可以幫我解決這些問題。

+0

在訪問這些文件的情況下,你可以參考這篇文章。 http://stackoverflow.com/a/21462018/379779 – zawhtut 2014-12-02 06:46:02

回答

1

資源文件經常存儲在WEB-INF中,因爲Java servlet容器不會直接提供這些文件。相反,一些Java控制器代碼正被用於間接服務它們。這是完全可以接受的,但是我更喜歡一種解決方案,它可以提供來自不同服務器的靜態內容,並讓Java容器只處理動態代碼。在少數情況下,您可能只需添加反向代理和卸載靜態內容即可。

+0

嗨艾略特謝謝你的澄清。我可以知道更多關於反向代理和如何使用春天的應用程序你可以建議我任何網站,我可以瞭解這一點。 – dGohil 2014-12-04 04:20:27

+0

可以將許多Web代理(Squid,Varnish)和Web服務器(Apache,IIS)設置爲反向代理。這[Wikipedia文章](http://en.wikipedia.org/wiki/Reverse_proxy)可能會有所幫助。 – 2014-12-04 04:25:29

2

如您所說,我們將配置文件放入WEB-INF文件夾中。但是,有些情況下您使用的資源文件(例如HTML模板)不會按原樣發送到客戶端,但通常會進行一些轉換或參數替換,通常由Servlet來處理。

將這些模板和資源放到WEB-INF文件夾中是可以的,因爲這些文件不應該是客戶端可見/可訪問的,而只能是轉換/參數替換的結果。

0

在Spring的情況下,您可以在沒有WEB-INF目錄的情況下構建您的應用程序。例如:spring-boot + thymeleaf,可以將所有的html,css和js文件放到src/main/resources/static中。所以所有的java web應用程序都不需要WEB-INF目錄。

0

根本不需要使用WEB-INF。 下面是一個簡單的AngularJS example app(官方春季指南)關於如何做到這一點。現在,就像Elliot提到的那樣,有時使用代理是一個好主意(取決於應用程序應支持的流量種類)。您也可以使用CDN,它更容易設置,並且在您的應用程序中沒有配置要求。