1. 程式人生 > >jsp文件放在WebRoot下還是WebInfo下

jsp文件放在WebRoot下還是WebInfo下

不用 這樣的 ews del -i null 應用 哪裏 現在

觀點一:(較為贊同)

安全性不是真正的原因,因為jsp是要解析後才顯示到瀏覽器的,即使用戶知道你jsp的路徑,也不可能通過瀏覽器看到jsp源碼的,而如果是通過其它手段入侵服務器的話,放在WEB-INF又和放在別的地方有什麽區別呢???
真正的原因是,對於早期直接嵌入java代碼的jsp,是直接給出jsp路徑給用戶訪問的,這種情況恰恰不能放在WEB-INF,而到了現在的mvc模 式,jsp已經不是曾經那個包含完整邏輯的jsp,而僅僅充當view層的模板,必須要填入model數據後進行渲染,才能生成可讀的頁面,這樣的模板是 不能讓用戶直接訪問的,直接訪問的話要麽是一堆各種空白,或者一堆占位符,甚至一堆NullPointException,所以需要放到WEB-INF 裏。補充一下,“安全性問題”指的是“不允許你訪問,否則會對我不好”,而這裏的情況其實是“不建議你訪問,否則會對你不好”,應該屬於健壯性的範疇。

觀點二:

放到WEB-INF下的Jsp文件,如果你直接去訪問這個Jsp是不可以的,必須通過Action的跳轉,這樣就能夠理解為什麽安全性高了,對 於用戶是不可見的,對於一些對於用戶,可以直接訪問的,如,登錄,註冊頁面,可以直接放在webroot下,這個也是根據你系統的需求了。

觀點三:

通過設置過濾器,放在webroot下面的文件也可以實現不能直接訪問。所以說放在哪裏就看習慣是什麽樣了。
一般項目都是要求隱藏性的,只讓客戶通過請求訪問而不是直接訪問jsp頁面。若放在webroot下面,肯定要加一個過濾器阻止所有對*.jsp的訪問。只要比較的話:

放在webroot下面:優點,程序結構清晰,便於編碼和維護;缺點,要加過濾器。
放在web-inf下面:優點,不用過濾器;缺點,打亂了程序結構,編碼和維護麻煩

觀點四:

為了減少風險,可以把這些頁面文件移到WEB-INF
目錄下。基於Servlet的聲明,WEB-INF不作為Web應用的公共文檔樹的一部分。因此,WEB-INF 目錄下的資源不是為客戶直接服務的。我們仍然可以使用WEB-INF目錄下的JSP頁面來提供視圖給客戶,客戶卻不能直接請求訪問JSP。JSP存放在 WEB-INF 目錄下更為安全。

jsp文件放在WebRoot下還是WebInfo下