把JSP放到WEB
INF後以保護JSP源代碼
為了更好地保護你的JSP避免未經授權的訪問和窺視
一個好辦法是將頁面文件存放在Web應用的WEB
INF目錄下
通常JSP開發人員會把他們的頁面文件存放在Web應用相應的子目錄下
一個典型的商店應用程序的目錄結構如圖
所示
跟catalog (商品目錄)相關的JSP被保存在catalog子目錄下
跟customer相關的JSP
跟訂單相關的JSP等都按照這種方法存放
這種方法的問題是這些頁面文件容易被偷看到源代碼
或被直接調用
某些場合下這可能不是個大問題
可是在特定情形中卻可能構成安全隱患
用戶可以繞過Struts的controller直接調用JSP同樣也是個問題
為了減少風險
可以把這些頁面文件移到WEB
INF 目錄下
基於Servlet的聲明
WEB
INF不作為Web應用的公共文檔樹的一部分
因此
WEB
INF 目錄下的資源不是為客戶直接服務的
我們仍然可以使用WEB
INF目錄下的JSP頁面來提供視圖給客戶
客戶卻不能直接請求訪問JSP
采用前面的例子
圖
顯示將JSP頁面移到WEB
INF 目錄下後的目錄結構
如果把這些JSP頁面文件移到WEB
INF 目錄下
在調用頁面的時候就必須把
WEB
INF
添加到URL中
例如
在一個Struts配置文件中為一個logoff action寫一個Action mapping
其中JSP的路徑必須以
WEB
INF
開頭
如下所示
請注意粗體部分
這個方法在任何情況下都不失為Struts實踐中的一個好方法
是唯一要注意的技巧是你必須把JSP和一個Struts action聯系起來
即使該Action只是一個很基本的很簡單JSP
也總是要調用一個Action
再由它調用JSP
最後要說明的是
並不是所有的容器都能支持這個特性
WebLogic早期的版本不能解釋Servlet聲明
因此無法提供支持
據報道在新版本中已經改進了
總之使用之前先檢查一下你的Servlet容器
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28586.html