今天在寫一個小項目是遇到一個問題。就是瀏覽器無法直接訪問Tomcat WEB-INF目錄下的文件。
項目如下:
其中index.jsp代碼如下:
當(dāng)瀏覽器訪問Result.jsp時,無法正常顯示,通過了解才得知,原來Tomcat WEB-INF目錄下的文件,瀏覽器一般無法直接方法,只能通過重定向后才可以訪問,如果需要直接訪問,可以放在和WEB-INF同級目錄下。
下面是網(wǎng)上有關(guān)此問題的討論:
CSDN問題:
jsp放在webroot目錄下 這樣就可以讓用戶直接訪問,jsp放在web-inf目錄下就必須要通過請求才能訪問。
因此放在web-inf下jsp頁面顯得要安全。
既然這樣 ,那是不是只要是需要通過請求才可以訪問的頁面就一定要放在web-inf目錄下呢
還有放在webroot和放在web-inf目錄下都各有什么明顯的優(yōu)缺點 。
望大家討論...
1樓:
通過設(shè)置過濾器,放在webroot下面的文件也可以實現(xiàn)不能直接訪問。所以說放在哪里就看習(xí)慣是什么樣了。
一般項目都是要求隱藏性的,只讓客戶通過請求訪問而不是直接訪問jsp頁面。若放在webroot下面,肯定要加一個過濾器阻止所有對*.jsp的訪問。只要比較的話:
放在webroot下面:優(yōu)點,程序結(jié)構(gòu)清晰,便于編碼和維護;缺點,要加過濾器。
放在web-inf下面:優(yōu)點,不用過濾器;缺點,打亂了程序結(jié)構(gòu),編碼和維護麻煩點。
其實二者沒啥大區(qū)別,個人傾向于放在webroot下面
2樓:
放web-inf干嘛,web-inf一般都是用來放不允許用戶訪問到的東西吧,JSP本來就是用于訪問的,感覺像是一個private的interface一樣...,又是讓人調(diào)又隱藏...
3樓:
問題是jsp里面內(nèi)容都是要通過請求才能獲取的 那如果放在webroot下 直接訪問的話 頁面就空空如也了 或者直接報錯
4樓:
一、加個過濾器并不麻煩,而且加上后就可以永遠(yuǎn)不用再管了。
二、放在WEB-INF下面,首先從理解上就很別扭,然后WEB-INF下面通常有很多文件,開發(fā)過程中從里面尋找一個文件或文件夾是很不方便的。
http://bbs.csdn.net/topics/320097731
為了減少風(fēng)險,可以把這些頁面文件移到WEB-INF 目錄下?;?/span>Servlet的聲明,WEB-INF不作為Web應(yīng)用的公共文檔樹的一部分。因此,WEB-INF 目錄下的資源不是為客戶直接服務(wù)的。我們?nèi)匀豢梢允褂?/span>WEB-INF目錄下的JSP頁面來提供視圖給客戶,客戶卻不能直接請求訪問JSP。
JSP存放在 WEB-INF 目錄下更為安全
如果把這些JSP頁面文件移到WEB-INF 目錄下,在調(diào)用頁面的時候就必須把"WEB-INF"添加到URL中。
我們知道,實現(xiàn)頁面的跳轉(zhuǎn)有兩種方式,一種是通過redirect的方式,一種是通過forward的方式。redirect方式的跳轉(zhuǎn),系統(tǒng)會在一個新的頁面打開要跳轉(zhuǎn)的網(wǎng)頁;而forward方式跳轉(zhuǎn),系統(tǒng)會在原來的頁面上打開一個要跳轉(zhuǎn)的網(wǎng)頁。所以放到WEB-INF目錄下的文件是不允許采用redirect方式的跳轉(zhuǎn)來訪問的