struts2 中不能从一个action转发到另一个action.但是可以重定向完成.

来源:互联网 发布:ios5.1.1旧版软件助手 编辑:程序博客网 时间:2024/04/30 15:07

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必须通过重定向.
 

原创粉丝点击