struts2的chain返回类型会重新寻找action,而不会匹配请求后缀和包。使用chain类型跳转时会使用与该请求同样的值栈对象,因为使用chain返回类型不会发送新的请求,而一个请求对应一个值栈对象、ActionContext对象、ServletActionContext对象,所以触发chain返回方式的时候不会创建新的值栈对象。
类似的返回方式还有dispatcher,如果你用了这个返回方式将不会执行struts2的action了,虽然是同一个请求,但dispatcher返回类型是请求转发,tomcat会将转发的地址在web.xml匹配Servlet,而不会匹配filter了,而struts2的入口刚好是filter,所以使用请求转发这个返回类型将无法执行目标action。
将struts2的filter的dispatcher标签设为FORWORD就可以解决返回类型为dispatcher时无法访问action的问题了。
这种方式对于chain方式的优势在于可以追加请求参数
struts2的chain返回类型和dispatcher返回类型的区别
· 2019-12-15
上一篇:没有了
下一篇:struts2的执行过程
评论