ITKeyword,专注技术干货聚合推荐

注册 | 登录

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

wangdianyong 分享于 2014-05-16

推荐:让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别

JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是二者是有很大的区别的,分条来说,

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

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

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

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

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

1.地址栏显示

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

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

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

地址栏是显示新的url.。

2.从数据共享来说

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

推荐:jsp与SERVLET的区别

简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常

sendRedirect:是不共享数据的。

3.请求资源的范围

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

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

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

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

4.使用地方

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

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

5.效率

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

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

推荐:Servlet与Jsp的区别

Servlet是一种在服务器端运行的Java程序,从某种意义上说,它就是服务器端的Applet。而Jsp是继Servlet后Sun公司推出的新技术,它是以Servlet为基础开发的。Servl

大多数的面试题几乎都会这个问题今天总结一下 forward是服务器内部重定向,程序在接到请求重新定向到另一个程序,客户机不知道。 而sendRedirect()是服务器端接受请求后发送一个状态头给客户

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。