struts1 redirect issue
程序员文章站
2022-06-07 15:26:20
...
近日突然发现struts1 的redirect有很大的限制,它只能redirect到APP domain下的某个URL,超出了domain的resource是无法访问的(如web server上的html)!
例如:
可以redirect 到以下URL:
但是无法redirect 到超出APP的URL:
具体见下面代码:
而且注意,如果不指定具体的action type,redirect是不起作用的!
例如下面的action例子,redirect不工作,因为没有指定具体的type:
要让redirect工作,应该像下面这样配置:
具体参见RequestProcessor的代码。
例如:
可以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的代码。
推荐阅读
-
jsp struts1 标签实例详解第1/2页
-
基于vue-router 多级路由redirect 重定向的问题
-
php download.php实现代码 跳转到下载文件(response.redirect)
-
浅谈struts1 & jquery form 文件异步上传
-
Response.Redirect 正在中止线程解决方案
-
详解如何用django实现redirect的几种方法总结
-
如何用Response.Redirect方法传递汉字
-
ThinkPHP中redirect用法分析
-
Struts1之url截取_动力节点Java学院整理
-
ThinkPHP框架使用redirect实现页面重定向的方法实例分析