您的位置:首页 > 产品设计 > UI/UE

request.getRequestDispatcher(".jsp")和response.sendRedirect(".jsp")的区别

2014-05-16 12:20 423 查看
大多数的面试题几乎都会这个问题今天总结一下

forward是服务器内部重定向,程序在接到请求重新定向到另一个程序,客户机不知道。

而sendRedirect()是服务器端接受请求后发送一个状态头给客户,客户再一次请求。

它们之间的区别大致有一下几点

1.地址栏显示

forward是服务器请求资源,服务器直接访问目标地址的url,把那个url的响应内容读取

过来,由于浏览器不知道服务器发送的内容从何而来,所以其地址还是原来的地址。

sendRedirect是服务根据逻辑,发送一个状态码,告诉浏览器去请求那个地址,所以

地址栏是显示新的url.。

2.从数据共享来说

forward:转发页面和转发到的页面数据共享request作用域里面的数据。

sendRedirect:是不共享数据的。

3.请求资源的范围

sendRedirect:不仅可以重定向到当前应用程序的其他资源,还可以到同一个站点的

其他应用程序的资源,甚至使用绝对url重定向到其他站点的资源。

forward:只能用于同一个web应用程序内部的资源请求,是服务器内部的一种操作。

redirect是服务器通知客户端,让客户端重新发起请求。

4.使用地方

forward:一般用于用户登录,根据角色转发到相应的模块。

redirect:一般用户注销登录,返回主页面或跳转到其他的网站等。

5.效率

forward:由于是服务器内部的一种操作,所以效率较高。

redirect:需要经过两次客户端和服务端的网络通信所以效率较慢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐