struts2 中不能从一个action转发到另一个action.但是可以重定向完成.
分析得:
虽然action和servlet功能类似,但实质上不是一个概念的东西(起码servlet声明周期是从访问开始一直到web容器退出,是共享的;而action是线程本地化的)
1>.action是一个pojo ,是struts定义的概念.
由于struts2基于filter,所以会过滤掉一些url.如访问servlet的时候会找不到相关的映射,而报错找不到相应action的映射.这也是该filter(StrutsPreparedAndExecuteFilter)功能之一.
2>.struts2中的action都是线程本地化的,而非共享的.并且action的初始化相关工作(ActionContext等的初始化)都在filter中完成.
3>.转发与重定向的区别导致,转发是在服务器端的行为,所以只会经过filter一次;而重定向会再次经历过filter.
综合以上原因:不经过filter就不能完成action的初始化工作,所以转发不能给action,如果想从一个 action 跳转到另外的action必须通过重定向.