解决spring+iframe时 iframe src的路径问题,由不安全的根目录到WEB-INF 的安全目录

来源:互联网 发布:flash mac破解版下载 编辑:程序博客网 时间:2024/06/04 17:53

在具体介绍之前,先来说下问题产生的具体场景,以便大家快速锁定问题,具体问题具体分析。


首先指明后台应用的是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所处的位置呢?


小弟刚接触不久,说的不对的地方还请各位纠正,在下虚心接受

        



   

0 0
原创粉丝点击