当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

struts1 redirect issue

发表于: 2014-05-08   作者:cuishen   来源:转载   浏览:
摘要: 近日突然发现struts1 的redirect有很大的限制,它只能redirect到APP domain下的某个URL,超出了domain的resource是无法访问的(如web server上的html)! 例如: 可以redirect 到以下URL: http://cuishen.iteye.com/APP/test.jsp 但是无法redirect 到超出APP的UR
近日突然发现struts1 的redirect有很大的限制,它只能redirect到APP domain下的某个URL,超出了domain的resource是无法访问的(如web server上的html)!

例如:
可以redirect 到以下URL:
http://cuishen.iteye.com/APP/test.jsp

但是无法redirect 到超出APP的URL:
http://cuishen.iteye.com/test.html


具体见下面代码:
@see org.apache.struts.action.RequestProcessor

/* 447*/        if(forward.getRedirect())
                {
                    //斜杠开头的URL会自动加上APP名的
/* 449*/            if(uri.startsWith("/"))
/* 450*/                uri = request.getContextPath() + uri;

/* 452*/            response.sendRedirect(response.encodeRedirectURL(uri));
                } else
                {
/* 455*/            doForward(uri, request, response);
                }


而且注意,如果不指定具体的action type,redirect是不起作用的!
例如下面的action例子,redirect不工作,因为没有指定具体的type:
<action path="/user/ErrorPage" forward="/WEB-INF/jsp/ServerError.jsp" redirect="true"/>


要让redirect工作,应该像下面这样配置:
        <action path="/user/ErrorPage" type="xxx.xxx.XxxAction">
        	<forward name="success" path="/ServerError.jsp" redirect="true"/>
        </action>


具体参见RequestProcessor的代码。

struts1 redirect issue

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号