简述Struts2中Redirect和Dispatcher的区别
二者都是实现页面的跳转,主要有几个比较大的区别:
先说Redirect,也就是“重定向”,
浏览器地址栏会发生变化,变为跳转到的url地址;
重定向可以跳转到任意url地址,不止局限于当前的Web应用;
在Web应用中,请求的内容在重定向前后不共享;
其过程是:
用户请求-----》服务器-------》组件------>服务器-------》用户-------》新的请求
(修改用户请求)
再说Struts2里的Dispatcher,作用是“转发”,
只是服务器端把请求和响应由当前服务器应用转给另外的服务器应用,浏览器地址栏不发生变化;
转发只能在当前Web应用之下进行,不能跳到别的Web应用去。
Web应用中,请求的内容在转发前后是共享的,也就是说其实请求还是原来那个。
其过程是:
用户请求-----》服务器-------》组件1-------》组件2------->服务器-------》用户
(请求不变)
其他还有一些细微差别,不过原理大抵像上面两个图能看懂就彻底明白了。
”转发“和”重定向“其实不仅是Struts2能用,在Web中也是个基础概念,即Servlet/JSP也能用,php, python, ruby,asp.net等涉及Web开发也是一样的。
2024-04-11 广告