欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

struts1 redirect issue

程序员文章站 2022-06-07 15:26:20
...
近日突然发现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的代码。
相关标签: struts redirect