解決spring+iframe時 iframe src的路徑問題,由不安全的根目錄到WEB-INF 的安全目錄

在具體介紹之前,先來說下問題產生的具體場景,以便大家快速鎖定問題,具體問題具體分析。


首先指明後臺應用的是spring框架,攔截的是html請求,返回的是jsp頁面。

在Spring 的spring-servlet.xml配置中,有一項關於請求和響應路徑的選擇配置,代碼如下:

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp"></property>
    </bean>

而問題就出在這裏,因爲要使用的iframe標籤裏面的src屬性所指定的路徑爲項目工程的根目錄下(或者項目根目錄下的其他可訪問目錄,以下統稱根目錄),但是上方prefix屬性配置中的路徑是iframe 標籤的src屬性無法訪問到。


但是相關的業務邏輯處理後的視圖都需要轉到prefix屬性配置下的路徑中,而iframe恰恰要引用已經業務邏輯處理後的視圖,如何解決這個問題呢?


解決辦法:

      叫做遠交近攻。對於iframe的src只能訪問項目的根目錄.而根目錄下的頁面也可發出業務請求,那就利用根目錄下的頁面作爲跳板,直接發出業務訪問,返回來的視圖即是iframe所需要的業務邏輯已經處理好的視圖。示例如下:

          <iframe src="a.jsp" width="!00%" height="100%" frameborder="0"
            scrolling="auto" name="MainFrame"> </iframe>   

               其中,a.jsp文件就是在項目根目錄下的頁面,在這個頁面裏面只需要寫入以下代碼即可

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<% response.sendRedirect(path+"/a.html");%>.

a.html就是你發出的業務請求路徑,在後臺處理完成後返回的頁面指定爲prefix屬性下的視圖即可。


問題:用這種方法完全滿足要求,但是這種方法返回的業務邏輯處理過後的視圖是iframe所在的位置,那麼如何將返回的視圖顯示在新的窗口中,而不只是iframe所處的位置呢?


小弟剛接觸不久,說的不對的地方還請各位糾正,在下虛心接受

        



   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章