JavaWeb基础回顾:servlet或jsp中怎么定义forward 和redirect及两者区别详解

前言:关于转发和重定向的问题是JavaWeb后端开发面试中比较容易被问到的问题,有时候容易弄混淆,今天翻了翻之前的教课书,打算写一篇博客来对这两者的区别做一个比较详细的讲解,希望能够帮助到阅读的人!

转发:request.getRequestDispatcher (“demo.jsp"). forward(request, response);

            (jsp中可以使用jsp动作指令来实现)<jsp:forward page="demo.jsp"></jsp:forward>

重定向:response.sendRedirect(“demo.jsp");

两者的区别:

I.从浏览器的地址显示上

forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该目标地址的相应内容进行读取,再把读取的内容发给浏览器,因此客户端浏览器的地址不变;而redirect是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍,所以地址显示栏会变。

II.从数据共享来看

forward转发的页,以及转发到的目标7页面能够共享request里面的数据;而redirect转发的页及转发到的目标页面不能共享request里面的数据。

III.从功能来看

redirect能够重定向到当前应用程序的其他资源,还能重定向到同站点的其他应用程序的资源,甚至使用绝对url地址重定向到其他站点的资源;而forward只能在同一个Web应用程序内的资源之间转发请求,可理解为服务器内部的一种操作。

IV.从效率来看

forward效率较高,因为跳转仅发生在服务器端;redirect相对较低,因为类似于再进行一次请求

 

尾声:欢迎大家访问本人的个人网站553影院以及LongBro博客,你的访问是我最大的动力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章