問題:springMVC框架訪問web-inf下的jsp文件,具體如下: 使用springMVC,一般都會使用springMVC的視圖解析器,大概會這樣配置
<property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property>
當我的control返回
return new ModelAndView("admin/index");
實際訪問的就是/WEB-INF/jsp/admin/index.jsp這個頁面,那么放在web-inf下只能服務端可以訪問保證了安全性。如果index.jsp中有這樣一個代碼
<frame src="left.jsp"/>
,top.jsp和index.jsp都在admin目錄下,這樣訪問index就會404.
此時糾結了:1、top.jsp如果一定要和index.jsp在同目錄下,就要加個control,為一個連接加個control太不值。2、如果不在同一目錄下放到webRoot根目錄下,index.jsp和top.jsp就不在同一個地方,維護時候不太方便,3、另一種情況springMVC視圖解析器路徑修改為<property name="prefix" value="/jsp/"></property>即在項目根目錄下,這樣客戶端也可直接訪問此目錄,沒有安全性可言,到底該怎么做呢?
通過互聯網整理獲得以下解決方法:
=================1樓=====================
<mvc:view-controller path="/left" view-name="left"/>
=================2樓=====================
我的做法是 —— 還得加控制器。思路是下面這樣
[list=1]
- 弄個專門放公開的jsp的目錄,比如/WEB-INF/jsp/public
- 弄個control,spring也有個只是redirect的來着。或者自己寫個。里面固定轉向上面的目錄。當然可以用參數配置等靈活點實現。
<frame src="left.jsp"/>
變成
<frame src="redirect.do?page=left.jsp"/>
類似這樣。
[/list]
這么做的目的,基本上就是回答你的問題。
1. jsp統一放在一起 —— /WEB-INF/jsp/。
2. 用一個且只用一個控制器控制需要公開的jsp。