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

大多数的面试题几乎都会这个问题今天总结一下

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

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

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

1.地址栏显示

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

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

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

地址栏是显示新的url.。

2.从数据共享来说

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

sendRedirect:是不共享数据的。

3.请求资源的范围

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

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

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

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

4.使用地方

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

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

5.效率

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

redirect:需要经过两次客户端和服务端的网络通信所以效率较慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值